From 52a380120846174213ccce9c4aab0dda17c72083 Mon Sep 17 00:00:00 2001
From: ejakowatz
Date: Tue, 9 Jul 2002 12:24:59 +0000
Subject: [PATCH] It is accomplished ...
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10 a95241bf-73f2-0310-859d-f6bbb57e9c96
---
Jamfile | 4 +
Jamrules | 735 +
ReadMe | 102 +
configure | 37 +
.../app/usecases/BMessageQueueUseCases.html | 147 +
.../develop/app/usecases/PortLinkUseCases.htm | 48 +
docs/develop/befs/resources.html | 54 +
docs/develop/drivesetup/DesDoc.txt | 165 +
docs/develop/drivesetup/todo.txt | 5 +
docs/develop/fontprefs/readme | 16 +
docs/develop/fontprefs/readme.xml | 112 +
docs/develop/ikteam/BinCompat.html | 181 +
docs/develop/ikteam/IK_Process.html | 140 +
docs/develop/ikteam/UnitTestingInfo.html | 391 +
docs/develop/ikteam/images/Check.gif | Bin 0 -> 925 bytes
docs/develop/ikteam/images/DocumentDraw.gif | Bin 0 -> 1021 bytes
docs/develop/ikteam/images/GoalFlag.gif | Bin 0 -> 186 bytes
docs/develop/ikteam/images/Hammer.gif | Bin 0 -> 988 bytes
docs/develop/ikteam/images/Help.gif | Bin 0 -> 1003 bytes
docs/develop/ikteam/images/User.gif | Bin 0 -> 987 bytes
docs/develop/ikteam/images/blank-20.gif | Bin 0 -> 837 bytes
docs/develop/ikteam/index.html | 43 +
docs/develop/ikteam/schedule/Discussion.html | 71 +
docs/develop/ikteam/schedule/Tasks.xml | 7540 +++++
.../ApplicationKitMilestones.html | 165 +
.../schedule/applicationkit/BCursor.html | 305 +
.../schedule/applicationkit/BHandler.html | 930 +
.../schedule/applicationkit/BLooper.html | 1280 +
.../schedule/applicationkit/Clipboard.html | 555 +
.../schedule/applicationkit/Messaging.html | 6153 ++++
.../schedule/applicationkit/Roster.html | 955 +
.../applicationkit/ScriptingSupport.html | 580 +
docs/develop/ikteam/schedule/assignments.html | 789 +
docs/develop/ikteam/schedule/index.html | 147 +
.../schedule/integration/BApplication.html | 1030 +
.../schedule/integration/BArchivable.html | 513 +
.../ikteam/schedule/integration/BView.html | 5105 ++++
.../ikteam/schedule/integration/BWindow.html | 2580 ++
.../integration/IntegrationMilestones.html | 156 +
.../interfacekit/AdvancedControlWidgets.html | 3887 +++
.../schedule/interfacekit/ControlWidgets.html | 8194 ++++++
.../schedule/interfacekit/Group1Support.html | 2629 ++
.../schedule/interfacekit/Group2Support.html | 1962 ++
.../schedule/interfacekit/Group3Support.html | 2421 ++
.../interfacekit/InterfaceKitMilestones.html | 195 +
.../interfacekit/ListViewSupport.html | 4154 +++
.../schedule/interfacekit/MenuingSupport.html | 5278 ++++
.../schedule/interfacekit/Miscellaneous.html | 2519 ++
.../interfacekit/Non-ControlWidgets.html | 2496 ++
.../interfacekit/ReplicantSupport.html | 1938 ++
.../interfacekit/ScrollingSupport.html | 1871 ++
.../interfacekit/TextViewSupport.html | 3688 +++
.../schedule/supportkit/BStopWatch.html | 339 +
.../ikteam/schedule/supportkit/IO.html | 904 +
.../supportkit/SupportKitMilestones.html | 168 +
.../schedule/supportkit/Synchronization.html | 688 +
.../ikteam/schedule/supportkit/Utilities.html | 4920 ++++
.../schedule/templates/assignments.html | 83 +
.../ikteam/schedule/templates/group.html | 167 +
.../ikteam/schedule/templates/index.html | 100 +
.../ikteam/schedule/templates/milestone.html | 29 +
.../ikteam/schedule/templates/tasks.html | 254 +
docs/develop/input/BInputServerDevice | 16 +
docs/develop/input/BInputServerFilter | 9 +
docs/develop/input/BInputServerMethod | 11 +
docs/develop/input/Function Specs | 32 +
docs/develop/input/Headers | 51 +
docs/develop/input/InputServer_functions.txt | 66 +
docs/develop/input/input_server threads | 12 +
docs/develop/input/intro to input_server | 149 +
docs/develop/input/is_manager.fil | 0
docs/develop/input/is_server.fil | 100 +
docs/develop/input/is_server2.fil | 100 +
docs/develop/input/miscellaneous | 18 +
docs/develop/input/objdump-inputserver | 104 +
.../kernel/arch_vm_translation_map_x86 | 72 +
docs/develop/kernel/arch_vm_x86 | 11 +
docs/develop/kernel/vm | 210 +
docs/develop/kernel/vm_cache | 41 +
docs/develop/kernel/vm_daemon | 33 +
docs/develop/kernel/vm_page | 112 +
docs/develop/kernel/vm_store_anonumous_noswap | 21 +
docs/develop/kernel/vm_store_device | 20 +
docs/develop/kernel/vm_store_null | 20 +
docs/develop/kernel/vm_store_vnode | 23 +
docs/develop/keymap/About.txt | 38 +
docs/develop/midi/Milestones | 5 +
docs/develop/midi/ToDo | 19 +
docs/develop/net/00-Design_general | 97 +
docs/develop/net/10-NetworkDrivers | 13 +
docs/develop/net/30-NetCache | 22 +
docs/develop/net/Milestones | 66 +
docs/develop/net/naming | 20 +
docs/develop/print/AddPrinter Message.txt | 6 +
docs/develop/print/Input Driver.txt | 19 +
docs/develop/print/MessagesFromPageSetup.txt | 72 +
docs/develop/print/PrintSession Messages.txt | 40 +
.../print/Printers Def Window Frame.txt | 1 +
docs/develop/print/Printing Architecture.txt | 5 +
.../print/StyleEdit_PageSetup_JobSetup.txt | 18 +
docs/develop/print/libbe.so.printing.txt | Bin 0 -> 333 bytes
docs/develop/storage/Annotations | 444 +
docs/develop/storage/Completed | 5 +
docs/develop/storage/RegistrarNotes.html | 102 +
docs/develop/storage/ToDo | 237 +
docs/develop/storage/doxygen_config | 691 +
.../storage/resources/ResourcesFormat.tex | 614 +
.../support/usecases/BAutolockUseCases.html | 79 +
.../support/usecases/BLockerUseCases.html | 130 +
docs/develop/virtualmemory/README.XML | 147 +
docs/develop/virtualmemory/readme | 19 +
headers/os/BeBuild.h | 547 +
headers/os/add-ons/file_system/fsproto.h | 246 +
.../add-ons/input_server/InputServerDevice.h | 79 +
.../add-ons/input_server/InputServerFilter.h | 39 +
.../add-ons/input_server/InputServerMethod.h | 47 +
headers/os/app/AppDefs.h | 167 +
headers/os/app/Application.h | 223 +
headers/os/app/Clipboard.h | 82 +
headers/os/app/Cursor.h | 83 +
headers/os/app/Handler.h | 148 +
headers/os/app/Invoker.h | 128 +
headers/os/app/Looper.h | 237 +
headers/os/app/MessageFilter.h | 126 +
headers/os/app/MessageQueue.h | 67 +
headers/os/app/MessageRunner.h | 62 +
headers/os/app/Messenger.h | 116 +
headers/os/app/PropertyInfo.h | 134 +
headers/os/app/Roster.h | 227 +
headers/os/game/DirectWindow.h | 138 +
headers/os/game/FileGameSound.h | 80 +
headers/os/game/GameKit.h | 35 +
headers/os/game/GameSound.h | 98 +
headers/os/game/GameSoundDefs.h | 103 +
headers/os/game/PushGameSound.h | 87 +
headers/os/game/SimpleGameSound.h | 64 +
headers/os/game/StreamingGameSound.h | 83 +
headers/os/game/WindowScreen.h | 174 +
headers/os/interface/Alert.h | 155 +
headers/os/interface/Box.h | 126 +
headers/os/interface/Button.h | 119 +
headers/os/interface/CheckBox.h | 111 +
headers/os/interface/Control.h | 140 +
headers/os/interface/GraphicsDefs.h | 311 +
headers/os/interface/Input.h | 88 +
headers/os/interface/InterfaceDefs.h | 366 +
headers/os/interface/ListItem.h | 103 +
headers/os/interface/ListView.h | 213 +
headers/os/interface/Point.h | 114 +
headers/os/interface/PrintJob.h | 123 +
headers/os/interface/RadioButton.h | 115 +
headers/os/interface/Rect.h | 223 +
headers/os/interface/StatusBar.h | 141 +
headers/os/interface/StringItem.h | 55 +
headers/os/interface/StringView.h | 107 +
headers/os/interface/TextControl.h | 145 +
headers/os/interface/UnicodeBlockObjects.h | 125 +
headers/os/interface/View.h | 667 +
headers/os/interface/Window.h | 456 +
headers/os/kernel/OS.h | 246 +
headers/os/kernel/dirent.h | 35 +
headers/os/kernel/fcntl.h | 341 +
headers/os/kernel/sys/domain.h | 26 +
headers/os/kernel/sys/filio.h | 40 +
headers/os/kernel/sys/ioccom.h | 80 +
headers/os/kernel/sys/ioctl.h | 37 +
headers/os/kernel/sys/protosw.h | 147 +
headers/os/kernel/sys/socket.h | 251 +
headers/os/kernel/sys/socketvar.h | 236 +
headers/os/kernel/sys/stat.h | 229 +
headers/os/kernel/sys/uio.h | 41 +
headers/os/kernel/syscalls.h | 128 +
headers/os/kernel/thread_types.h | 172 +
headers/os/kernel/vfs_types.h | 35 +
headers/os/kernel/vm_types.h | 183 +
headers/os/media/Buffer.h | 108 +
headers/os/media/BufferConsumer.h | 203 +
headers/os/media/BufferGroup.h | 81 +
headers/os/media/BufferProducer.h | 239 +
headers/os/media/Controllable.h | 139 +
headers/os/media/FileInterface.h | 91 +
headers/os/media/MediaAddOn.h | 174 +
headers/os/media/MediaDecoder.h | 90 +
headers/os/media/MediaDefs.h | 736 +
headers/os/media/MediaEncoder.h | 91 +
headers/os/media/MediaEventLooper.h | 169 +
headers/os/media/MediaFile.h | 207 +
headers/os/media/MediaFiles.h | 69 +
headers/os/media/MediaFormats.h | 249 +
headers/os/media/MediaNode.h | 340 +
headers/os/media/MediaRoster.h | 428 +
headers/os/media/MediaTheme.h | 122 +
headers/os/media/MediaTrack.h | 293 +
headers/os/media/ParameterWeb.h | 523 +
headers/os/media/PlaySound.h | 34 +
headers/os/media/RealtimeAlloc.h | 51 +
headers/os/media/Sound.h | 111 +
headers/os/media/SoundFile.h | 101 +
headers/os/media/SoundPlayer.h | 197 +
headers/os/media/TimeCode.h | 119 +
headers/os/media/TimeSource.h | 141 +
headers/os/media/TimedEventQueue.h | 186 +
headers/os/midi/Midi.h | 89 +
headers/os/midi/MidiDefs.h | 248 +
headers/os/midi/MidiStore.h | 76 +
headers/os/midi/MidiText.h | 43 +
headers/os/storage/Directory.h | 109 +
headers/os/storage/Entry.h | 120 +
headers/os/storage/EntryList.h | 60 +
headers/os/storage/File.h | 85 +
headers/os/storage/FindDirectory.h | 135 +
headers/os/storage/Mime.h | 45 +
headers/os/storage/MimeType.h | 192 +
headers/os/storage/Node.h | 137 +
headers/os/storage/NodeInfo.h | 117 +
headers/os/storage/Path.h | 100 +
headers/os/storage/Query.h | 123 +
headers/os/storage/ResourceStrings.h | 90 +
headers/os/storage/Resources.h | 114 +
headers/os/storage/Statable.h | 83 +
headers/os/storage/StorageDefs.h | 56 +
headers/os/storage/SymLink.h | 87 +
headers/os/storage/Volume.h | 109 +
headers/os/support/Archivable.h | 97 +
headers/os/support/Autolock.h | 79 +
headers/os/support/ByteOrder.h | 142 +
headers/os/support/ClassInfo.h | 38 +
headers/os/support/DataIO.h | 74 +
headers/os/support/Errors.h | 258 +
headers/os/support/Flattenable.h | 36 +
headers/os/support/List.h | 53 +
headers/os/support/Locker.h | 62 +
headers/os/support/MallocIO.h | 45 +
headers/os/support/StopWatch.h | 41 +
headers/os/support/String.h | 9 +
headers/os/support/SupportDefs.h | 167 +
headers/os/support/TypeConstants.h | 125 +
headers/os/support/byteorder.h | 1 +
headers/os/translation/BitmapStream.h | 117 +
headers/os/translation/R4xTranslator.h | 98 +
headers/os/translation/TranslationDefs.h | 86 +
headers/os/translation/TranslationErrors.h | 27 +
headers/os/translation/TranslationKit.h | 18 +
headers/os/translation/TranslationUtils.h | 137 +
headers/os/translation/Translator.h | 137 +
headers/os/translation/TranslatorAddOn.h | 92 +
headers/os/translation/TranslatorFormats.h | 179 +
headers/os/translation/TranslatorRoster.h | 238 +
headers/posix/arpa/inet.h | 26 +
headers/posix/arpa/nameser.h | 395 +
headers/posix/core_funcs.h | 115 +
headers/posix/core_module.h | 158 +
headers/posix/lock.h | 128 +
headers/posix/net/if.h | 275 +
headers/posix/net/if_arp.h | 92 +
headers/posix/net/if_dl.h | 30 +
headers/posix/net/if_ppp.h | 129 +
headers/posix/net/if_types.h | 23 +
headers/posix/net/ppp_ctrl.h | 24 +
headers/posix/net/ppp_defs.h | 158 +
headers/posix/net/ppp_stats.h | 47 +
headers/posix/net/radix.h | 165 +
headers/posix/net/raw_cb.h | 17 +
headers/posix/net/route.h | 208 +
headers/posix/net_malloc.h | 37 +
headers/posix/net_misc.h | 102 +
headers/posix/net_module.h | 56 +
headers/posix/net_timer.h | 26 +
headers/posix/netdb.h | 177 +
headers/posix/netinet/icmp_var.h | 61 +
headers/posix/netinet/if_ether.h | 200 +
headers/posix/netinet/in.h | 148 +
headers/posix/netinet/in_pcb.h | 71 +
headers/posix/netinet/in_systm.h | 63 +
headers/posix/netinet/in_var.h | 64 +
headers/posix/netinet/ip.h | 129 +
headers/posix/netinet/ip_icmp.h | 172 +
headers/posix/netinet/ip_var.h | 155 +
headers/posix/netinet/tcp.h | 95 +
headers/posix/netinet/tcp_debug.h | 63 +
headers/posix/netinet/tcp_fsm.h | 86 +
headers/posix/netinet/tcp_seq.h | 67 +
headers/posix/netinet/tcp_timer.h | 136 +
headers/posix/netinet/tcp_var.h | 280 +
headers/posix/netinet/tcpip.h | 66 +
headers/posix/netinet/udp.h | 48 +
headers/posix/netinet/udp_var.h | 51 +
headers/posix/nhash.h | 40 +
headers/posix/poll.h | 24 +
headers/posix/pools.h | 55 +
headers/posix/protocols.h | 48 +
headers/posix/resolv.h | 349 +
headers/posix/sys/domain.h | 26 +
headers/posix/sys/mbuf.h | 318 +
headers/posix/sys/net_uio.h | 26 +
headers/posix/sys/protosw.h | 147 +
headers/posix/sys/select.h | 50 +
headers/posix/sys/socket.h | 216 +
headers/posix/sys/socketvar.h | 236 +
headers/posix/sys/sockio.h | 65 +
headers/posix/userland_ipc.h | 53 +
headers/private/app/PortLink.h | 43 +
headers/private/app/TokenSpace.h | 89 +
headers/private/input/kb_mouse_driver.h | 172 +
headers/private/interface/TextInput.h | 81 +
headers/private/interface/pr_server.h | 74 +
headers/private/kernel/Errors.h | 261 +
headers/private/kernel/arch/alpha/cpu.h | 11 +
headers/private/kernel/arch/alpha/kernel.h | 15 +
headers/private/kernel/arch/alpha/ktypes.h | 11 +
headers/private/kernel/arch/alpha/stage2.h | 41 +
.../private/kernel/arch/alpha/thread_struct.h | 18 +
headers/private/kernel/arch/alpha/va-alpha.h | 129 +
headers/private/kernel/arch/cpu.h | 47 +
headers/private/kernel/arch/dbg_console.h | 16 +
headers/private/kernel/arch/debug.h | 9 +
headers/private/kernel/arch/faults.h | 14 +
headers/private/kernel/arch/int.h | 22 +
headers/private/kernel/arch/ppc/cpu.h | 11 +
headers/private/kernel/arch/ppc/kernel.h | 28 +
headers/private/kernel/arch/ppc/ktypes.h | 11 +
headers/private/kernel/arch/ppc/stage2.h | 19 +
headers/private/kernel/arch/ppc/stage2_priv.h | 43 +
.../private/kernel/arch/ppc/thread_struct.h | 18 +
headers/private/kernel/arch/ppc/types.h | 18 +
headers/private/kernel/arch/sh4/cpu.h | 25 +
headers/private/kernel/arch/sh4/defs.h | 36 +
headers/private/kernel/arch/sh4/kernel.h | 30 +
headers/private/kernel/arch/sh4/ktypes.h | 11 +
headers/private/kernel/arch/sh4/mmu.h | 14 +
.../private/kernel/arch/sh4/rtl8139_priv.h | 13 +
headers/private/kernel/arch/sh4/rtl8139c.h | 84 +
headers/private/kernel/arch/sh4/serial.h | 14 +
headers/private/kernel/arch/sh4/sh4.h | 152 +
headers/private/kernel/arch/sh4/stage2.h | 19 +
.../private/kernel/arch/sh4/thread_struct.h | 17 +
headers/private/kernel/arch/sh4/types.h | 19 +
headers/private/kernel/arch/sh4/va-sh.h | 230 +
headers/private/kernel/arch/sh4/vcpu.h | 103 +
headers/private/kernel/arch/sh4/vcpu_struct.h | 22 +
headers/private/kernel/arch/smp.h | 19 +
headers/private/kernel/arch/sparc/DEFS.h | 44 +
headers/private/kernel/arch/sparc/cpu.h | 11 +
headers/private/kernel/arch/sparc/kernel.h | 15 +
headers/private/kernel/arch/sparc/ktypes.h | 11 +
headers/private/kernel/arch/sparc/promdev.h | 86 +
headers/private/kernel/arch/sparc/saerrno.h | 59 +
headers/private/kernel/arch/sparc/saioctl.h | 54 +
headers/private/kernel/arch/sparc/sparc.h | 12 +
.../kernel/arch/sparc/sparcbootblock.h | 13 +
headers/private/kernel/arch/sparc/stage2.h | 31 +
headers/private/kernel/arch/sparc/stand.h | 215 +
.../private/kernel/arch/sparc/thread_struct.h | 18 +
headers/private/kernel/arch/sparc/types.h | 18 +
headers/private/kernel/arch/sparc/va-sparc.h | 166 +
headers/private/kernel/arch/thread.h | 25 +
headers/private/kernel/arch/thread_struct.h | 31 +
headers/private/kernel/arch/timer.h | 15 +
headers/private/kernel/arch/vm.h | 17 +
.../private/kernel/arch/vm_translation_map.h | 48 +
headers/private/kernel/arch/x86/arch_cpu.h | 151 +
headers/private/kernel/arch/x86/arch_kernel.h | 30 +
headers/private/kernel/arch/x86/arch_stage2.h | 38 +
headers/private/kernel/arch/x86/arch_thread.h | 29 +
headers/private/kernel/arch/x86/console_dev.h | 16 +
headers/private/kernel/arch/x86/faults.h | 12 +
headers/private/kernel/arch/x86/ide_bus.h | 9 +
headers/private/kernel/arch/x86/ide_private.h | 100 +
headers/private/kernel/arch/x86/ide_raw.h | 31 +
headers/private/kernel/arch/x86/interrupts.h | 19 +
headers/private/kernel/arch/x86/keyboard.h | 9 +
headers/private/kernel/arch/x86/partition.h | 84 +
headers/private/kernel/arch/x86/ps2mouse.h | 106 +
headers/private/kernel/arch/x86/rtl8139_dev.h | 96 +
.../private/kernel/arch/x86/rtl8139_priv.h | 37 +
headers/private/kernel/arch/x86/smp_priv.h | 161 +
headers/private/kernel/arch/x86/stage2_priv.h | 200 +
.../private/kernel/arch/x86/thread_struct.h | 20 +
headers/private/kernel/arch/x86/timer.h | 11 +
headers/private/kernel/arch/x86/types.h | 31 +
headers/private/kernel/arch/x86/vesa.h | 66 +
headers/private/kernel/arch/x86/vm.h | 10 +
headers/private/kernel/assert.h | 32 +
headers/private/kernel/atomic.h | 87 +
headers/private/kernel/beos.h | 8 +
headers/private/kernel/beos_p.h | 192 +
headers/private/kernel/bootdir.h | 66 +
headers/private/kernel/bootfs.h | 10 +
headers/private/kernel/bus.h | 41 +
headers/private/kernel/cbuf.h | 51 +
headers/private/kernel/cdefs.h | 18 +
headers/private/kernel/console.h | 15 +
headers/private/kernel/cpu.h | 79 +
headers/private/kernel/ctlreg.h | 383 +
headers/private/kernel/ctype.h | 35 +
headers/private/kernel/dbg_console.h | 16 +
headers/private/kernel/debug.h | 27 +
headers/private/kernel/defines.h | 17 +
headers/private/kernel/dev.h | 15 +
headers/private/kernel/devfs.h | 16 +
headers/private/kernel/devs.h | 12 +
headers/private/kernel/dlfcn.h | 30 +
headers/private/kernel/drivers.h | 89 +
headers/private/kernel/elf.h | 17 +
headers/private/kernel/elf32.h | 217 +
headers/private/kernel/errno.h | 149 +
headers/private/kernel/faults_priv.h | 23 +
headers/private/kernel/fb_console.h | 12 +
headers/private/kernel/fd.h | 87 +
headers/private/kernel/float.h | 72 +
headers/private/kernel/font.h | 161 +
headers/private/kernel/gdb.h | 10 +
headers/private/kernel/int.h | 28 +
headers/private/kernel/isa.h | 58 +
headers/private/kernel/isovol.h | 106 +
headers/private/kernel/kernel.h | 59 +
headers/private/kernel/khash.h | 40 +
headers/private/kernel/ksocket.h | 30 +
headers/private/kernel/ksyscalls.h | 90 +
headers/private/kernel/ktypes.h | 91 +
headers/private/kernel/lock.h | 123 +
headers/private/kernel/math.h | 285 +
headers/private/kernel/mathimpl.h | 98 +
headers/private/kernel/mbuf.h | 319 +
headers/private/kernel/memheap.h | 17 +
headers/private/kernel/module.h | 40 +
headers/private/kernel/nhash.h | 40 +
headers/private/kernel/null.h | 12 +
headers/private/kernel/pci_bus.h | 43 +
headers/private/kernel/pci_p.h | 21 +
headers/private/kernel/pools.h | 53 +
headers/private/kernel/port.h | 48 +
headers/private/kernel/queue.h | 37 +
headers/private/kernel/resource.h | 38 +
headers/private/kernel/rootfs.h | 10 +
headers/private/kernel/sem.h | 36 +
headers/private/kernel/smp.h | 44 +
headers/private/kernel/stage2.h | 52 +
headers/private/kernel/stage2_struct.h | 20 +
headers/private/kernel/stdarg.h | 206 +
headers/private/kernel/stdio.h | 195 +
headers/private/kernel/stdlib.h | 76 +
headers/private/kernel/string.h | 56 +
headers/private/kernel/sysctl.h | 121 +
headers/private/kernel/thread.h | 81 +
headers/private/kernel/timer.h | 43 +
headers/private/kernel/trig.h | 215 +
headers/private/kernel/unistd.h | 64 +
headers/private/kernel/user_runtime.h | 44 +
headers/private/kernel/vfs.h | 172 +
headers/private/kernel/vm.h | 70 +
headers/private/kernel/vm_cache.h | 24 +
headers/private/kernel/vm_page.h | 26 +
headers/private/kernel/vm_priv.h | 51 +
.../kernel/vm_store_anonymous_noswap.h | 14 +
headers/private/kernel/vm_store_device.h | 14 +
headers/private/kernel/vm_store_null.h | 14 +
headers/private/kernel/vm_store_vnode.h | 14 +
headers/private/kernel/vm_translation_map.h | 48 +
headers/private/kernel/zero.h | 12 +
headers/private/kernel/zfs.h | 51 +
headers/private/kernel/zfs_fs.h | 117 +
headers/private/media/ChannelMixer.h | 32 +
headers/private/media/Decoder.h | 42 +
headers/private/media/Encoder.h | 44 +
headers/private/media/Extractor.h | 45 +
headers/private/media/PortPool.h | 37 +
headers/private/media/SampleConverter.h | 53 +
headers/private/media/SamplingrateConverter.h | 29 +
headers/private/media/SharedBufferList.h | 51 +
headers/private/media/TList.h | 40 +
headers/private/media/TMap.h | 60 +
headers/private/media/VolumeControl.h | 17 +
headers/private/media/Writer.h | 38 +
headers/private/media/debug.h | 40 +
headers/private/shared/ObjectList.h | 800 +
headers/private/storage/Elf.h | 105 +
headers/private/storage/Exception.h | 111 +
headers/private/storage/LibBeAdapter.h | 19 +
headers/private/storage/OffsetFile.h | 63 +
headers/private/storage/Pef.h | 46 +
headers/private/storage/QueryPredicate.h | 206 +
headers/private/storage/ResourceFile.h | 128 +
headers/private/storage/ResourceItem.h | 87 +
headers/private/storage/ResourcesContainer.h | 75 +
headers/private/storage/ResourcesDefs.h | 105 +
headers/private/storage/StorageDefs.Private.h | 17 +
headers/private/storage/kernel_interface.h | 326 +
headers/private/storage/storage_support.h | 42 +
headers/tools/cppunit/CppUnitShell.h | 126 +
headers/tools/cppunit/LockerSyncObject.h | 28 +
headers/tools/cppunit/TestCase.h | 18 +
headers/tools/cppunit/TestResult.h | 18 +
headers/tools/cppunit/TestShell.h | 17 +
headers/tools/cppunit/TestSuite.h | 18 +
headers/tools/cppunit/cppunit/Asserter.h | 91 +
.../tools/cppunit/cppunit/CompilerOutputter.h | 109 +
headers/tools/cppunit/cppunit/Exception.h | 81 +
.../tools/cppunit/cppunit/NotEqualException.h | 65 +
headers/tools/cppunit/cppunit/Outputter.h | 31 +
headers/tools/cppunit/cppunit/Portability.h | 85 +
headers/tools/cppunit/cppunit/SourceLine.h | 60 +
.../cppunit/cppunit/SynchronizedObject.h | 82 +
headers/tools/cppunit/cppunit/Test.h | 63 +
headers/tools/cppunit/cppunit/TestAssert.h | 229 +
headers/tools/cppunit/cppunit/TestCaller.h | 204 +
headers/tools/cppunit/cppunit/TestCase.h | 61 +
headers/tools/cppunit/cppunit/TestFailure.h | 59 +
headers/tools/cppunit/cppunit/TestFixture.h | 98 +
headers/tools/cppunit/cppunit/TestListener.h | 54 +
headers/tools/cppunit/cppunit/TestResult.h | 87 +
.../cppunit/cppunit/TestResultCollector.h | 88 +
.../cppunit/cppunit/TestSucessListener.h | 40 +
headers/tools/cppunit/cppunit/TestSuite.h | 77 +
headers/tools/cppunit/cppunit/TextOutputter.h | 60 +
.../cppunit/TextTestProgressListener.h | 43 +
.../tools/cppunit/cppunit/TextTestResult.h | 56 +
.../tools/cppunit/cppunit/TextTestRunner.h | 17 +
headers/tools/cppunit/cppunit/XmlOutputter.h | 136 +
headers/tools/cppunit/cppunit/config-auto.h | 60 +
.../cppunit/extensions/AutoRegisterSuite.h | 51 +
.../cppunit/cppunit/extensions/HelperMacros.h | 345 +
.../cppunit/cppunit/extensions/Orthodox.h | 94 +
.../cppunit/cppunit/extensions/RepeatedTest.h | 40 +
.../cppunit/extensions/TestDecorator.h | 66 +
.../cppunit/cppunit/extensions/TestFactory.h | 25 +
.../cppunit/extensions/TestFactoryRegistry.h | 148 +
.../cppunit/cppunit/extensions/TestSetUp.h | 32 +
.../cppunit/extensions/TestSuiteBuilder.h | 105 +
.../cppunit/extensions/TestSuiteFactory.h | 25 +
.../cppunit/extensions/TypeInfoHelper.h | 31 +
.../cppunit/cppunit/ui/text/TestRunner.h | 103 +
.../filters/screensaver/SSInputFilter.cpp | 82 +
.../filters/screensaver/SSInputFilter.h | 23 +
.../kernel/file_systems/befs/BPlusTree.cpp | 2053 ++
.../kernel/file_systems/befs/BPlusTree.h | 436 +
.../file_systems/befs/BlockAllocator.cpp | 599 +
.../kernel/file_systems/befs/BlockAllocator.h | 49 +
src/add-ons/kernel/file_systems/befs/Chain.h | 55 +
.../kernel/file_systems/befs/Debug.cpp | 241 +
src/add-ons/kernel/file_systems/befs/Debug.h | 74 +
.../kernel/file_systems/befs/Index.cpp | 335 +
src/add-ons/kernel/file_systems/befs/Index.h | 51 +
.../kernel/file_systems/befs/Inode.cpp | 2107 ++
src/add-ons/kernel/file_systems/befs/Inode.h | 309 +
.../kernel/file_systems/befs/Journal.cpp | 433 +
.../kernel/file_systems/befs/Journal.h | 152 +
src/add-ons/kernel/file_systems/befs/Lock.h | 337 +
.../kernel/file_systems/befs/Query.cpp | 1505 +
src/add-ons/kernel/file_systems/befs/Query.h | 72 +
src/add-ons/kernel/file_systems/befs/Stack.h | 58 +
src/add-ons/kernel/file_systems/befs/ToDo | 74 +
.../kernel/file_systems/befs/Utility.cpp | 138 +
.../kernel/file_systems/befs/Utility.h | 110 +
.../kernel/file_systems/befs/Volume.cpp | 304 +
src/add-ons/kernel/file_systems/befs/Volume.h | 176 +
src/add-ons/kernel/file_systems/befs/bfs.h | 298 +
src/add-ons/kernel/file_systems/befs/cache.h | 108 +
src/add-ons/kernel/file_systems/befs/cpp.cpp | 17 +
src/add-ons/kernel/file_systems/befs/cpp.h | 52 +
.../kernel/file_systems/befs/fsproto.h | 249 +
.../file_systems/befs/kernel_interface.cpp | 1880 ++
src/add-ons/kernel/file_systems/befs/lock.h | 47 +
.../drivers/canon_lips/libprint/AboutBox.cpp | 107 +
.../drivers/canon_lips/libprint/AboutBox.h | 16 +
.../drivers/canon_lips/libprint/DbgMsg.cpp | 237 +
.../drivers/canon_lips/libprint/DbgMsg.h | 26 +
.../drivers/canon_lips/libprint/Exports.h | 22 +
.../canon_lips/libprint/GraphicsDriver.cpp | 578 +
.../canon_lips/libprint/GraphicsDriver.h | 114 +
.../drivers/canon_lips/libprint/Halftone.cpp | 308 +
.../drivers/canon_lips/libprint/Halftone.h | 87 +
.../drivers/canon_lips/libprint/JobData.cpp | 309 +
.../drivers/canon_lips/libprint/JobData.h | 305 +
.../canon_lips/libprint/JobSetupDlg.cpp | 660 +
.../drivers/canon_lips/libprint/JobSetupDlg.h | 60 +
.../canon_lips/libprint/PageSetupDlg.cpp | 334 +
.../canon_lips/libprint/PageSetupDlg.h | 48 +
.../drivers/canon_lips/libprint/Pattern.h | 57 +
.../drivers/canon_lips/libprint/Preview.cpp | 53 +
.../drivers/canon_lips/libprint/Preview.h | 29 +
.../canon_lips/libprint/PrintProcess.cpp | 163 +
.../canon_lips/libprint/PrintProcess.h | 64 +
.../canon_lips/libprint/PrinterCap.cpp | 45 +
.../drivers/canon_lips/libprint/PrinterCap.h | 117 +
.../canon_lips/libprint/PrinterData.cpp | 97 +
.../drivers/canon_lips/libprint/PrinterData.h | 84 +
.../drivers/canon_lips/libprint/Transport.cpp | 111 +
.../drivers/canon_lips/libprint/Transport.h | 56 +
.../drivers/canon_lips/libprint/UIDriver.cpp | 66 +
.../drivers/canon_lips/libprint/UIDriver.h | 34 +
.../drivers/canon_lips/libprint/ValidRect.cpp | 253 +
.../drivers/canon_lips/libprint/ValidRect.h | 24 +
.../libprint/tools/make_pattern.cpp | 90 +
.../libprint/tools/original_dither_pattern.h | 24 +
.../drivers/canon_lips/lips3/Compress3.cpp | 97 +
.../drivers/canon_lips/lips3/Compress3.h | 11 +
.../print/drivers/canon_lips/lips3/Lips3.cpp | 424 +
.../print/drivers/canon_lips/lips3/Lips3.h | 53 +
.../print/drivers/canon_lips/lips3/Lips3.rsrc | Bin 0 -> 4162 bytes
.../drivers/canon_lips/lips3/Lips3Cap.cpp | 138 +
.../print/drivers/canon_lips/lips3/Lips3Cap.h | 19 +
.../drivers/canon_lips/lips3/Lips3Entry.cpp | 79 +
.../print/drivers/canon_lips/lips4/Lips4.cpp | 472 +
.../print/drivers/canon_lips/lips4/Lips4.h | 56 +
.../print/drivers/canon_lips/lips4/Lips4.rsrc | Bin 0 -> 4162 bytes
.../drivers/canon_lips/lips4/Lips4Cap.cpp | 203 +
.../print/drivers/canon_lips/lips4/Lips4Cap.h | 19 +
.../drivers/canon_lips/lips4/Lips4Entry.cpp | 79 +
.../drivers/canon_lips/lips4/PackBits.cpp | 158 +
.../print/drivers/canon_lips/lips4/PackBits.h | 11 +
src/add-ons/print/drivers/pdf/CHANGES | 39 +
src/add-ons/print/drivers/pdf/Install | 20 +
src/add-ons/print/drivers/pdf/README | 88 +
src/add-ons/print/drivers/pdf/TODO | 14 +
.../print/drivers/pdf/bookmarks/Sample | 13 +
.../drivers/pdf/doc/Create_Report_Mail.sh | 43 +
src/add-ons/print/drivers/pdf/doc/IF.pdf | Bin 0 -> 174305 bytes
.../drivers/pdf/doc/Interactive Features.gbe | Bin 0 -> 44161 bytes
.../print/drivers/pdf/doc/User Guide.html | 33 +
src/add-ons/print/drivers/pdf/doc/credits.zip | Bin 0 -> 1575 bytes
.../pdf/doc/images/add_local_printer.jpeg | Bin 0 -> 15031 bytes
.../drivers/pdf/doc/images/add_printer.jpeg | Bin 0 -> 14385 bytes
.../pdf/doc/images/make_default_printer.jpeg | Bin 0 -> 6123 bytes
.../pdf/doc/images/preferences_printers.jpeg | Bin 0 -> 25191 bytes
.../drivers/pdf/doc/images/printers.jpeg | Bin 0 -> 24312 bytes
.../print/drivers/pdf/doc/pdf_icon.tga | Bin 0 -> 12148 bytes
.../print/drivers/pdf/encoding/t1enc0.enc | 260 +
.../print/drivers/pdf/encoding/t1enc1.enc | 260 +
.../print/drivers/pdf/encoding/t1enc2.enc | 260 +
.../print/drivers/pdf/encoding/t1enc3.enc | 260 +
.../print/drivers/pdf/encoding/t1enc4.enc | 31 +
.../print/drivers/pdf/encoding/ttenc0.cpg | 260 +
.../print/drivers/pdf/encoding/ttenc1.cpg | 260 +
.../print/drivers/pdf/encoding/ttenc2.cpg | 260 +
.../print/drivers/pdf/encoding/ttenc3.cpg | 260 +
.../print/drivers/pdf/encoding/ttenc4.cpg | 31 +
.../pdf/source/AdvancedSettingsWindow.cpp | 275 +
.../pdf/source/AdvancedSettingsWindow.h | 82 +
.../print/drivers/pdf/source/Bezier.cpp | 85 +
src/add-ons/print/drivers/pdf/source/Bezier.h | 49 +
.../print/drivers/pdf/source/Bookmark.cpp | 190 +
.../print/drivers/pdf/source/Bookmark.h | 55 +
.../print/drivers/pdf/source/Defs4PPC.pch++ | 7 +
.../drivers/pdf/source/DocInfoWindow.cpp | 521 +
.../print/drivers/pdf/source/DocInfoWindow.h | 82 +
.../print/drivers/pdf/source/DrawShape.cpp | 200 +
.../print/drivers/pdf/source/DrawShape.h | 79 +
.../print/drivers/pdf/source/Driver.cpp | 228 +
src/add-ons/print/drivers/pdf/source/Driver.h | 43 +
.../print/drivers/pdf/source/Fonts.cpp | 534 +
src/add-ons/print/drivers/pdf/source/Fonts.h | 136 +
.../print/drivers/pdf/source/FontsWindow.cpp | 550 +
.../print/drivers/pdf/source/FontsWindow.h | 106 +
.../drivers/pdf/source/JobSetupWindow.cpp | 318 +
.../print/drivers/pdf/source/JobSetupWindow.h | 83 +
.../drivers/pdf/source/LinePathBuilder.cpp | 338 +
.../drivers/pdf/source/LinePathBuilder.h | 81 +
src/add-ons/print/drivers/pdf/source/Link.cpp | 452 +
src/add-ons/print/drivers/pdf/source/Link.h | 128 +
src/add-ons/print/drivers/pdf/source/Log.h | 12 +
.../print/drivers/pdf/source/MarginView.cpp | 694 +
.../print/drivers/pdf/source/MarginView.h | 226 +
.../drivers/pdf/source/MessagePrinter.cpp | 173 +
.../print/drivers/pdf/source/MessagePrinter.h | 59 +
.../print/drivers/pdf/source/Notes.txt | 59 +
.../drivers/pdf/source/PDFLinePathBuilder.cpp | 65 +
.../drivers/pdf/source/PDFLinePathBuilder.h | 58 +
.../print/drivers/pdf/source/PDFText.cpp | 561 +
.../print/drivers/pdf/source/PDFWriter.cpp | 2182 ++
.../print/drivers/pdf/source/PDFWriter.h | 356 +
.../print/drivers/pdf/source/PDFWriter.rsrc | Bin 0 -> 4155 bytes
.../drivers/pdf/source/PageSetupWindow.cpp | 580 +
.../drivers/pdf/source/PageSetupWindow.h | 95 +
.../drivers/pdf/source/PictureIterator.cpp | 151 +
.../drivers/pdf/source/PictureIterator.h | 93 +
.../drivers/pdf/source/PrinterDriver.cpp | 429 +
.../print/drivers/pdf/source/PrinterDriver.h | 114 +
.../print/drivers/pdf/source/PrinterPrefs.cpp | 102 +
.../print/drivers/pdf/source/PrinterPrefs.h | 56 +
.../drivers/pdf/source/PrinterSettings.cpp | 261 +
.../drivers/pdf/source/PrinterSettings.h | 83 +
.../drivers/pdf/source/PrinterSetupWindow.cpp | 244 +
.../drivers/pdf/source/PrinterSetupWindow.h | 72 +
.../print/drivers/pdf/source/RegExp.cpp | 1340 +
src/add-ons/print/drivers/pdf/source/RegExp.h | 179 +
.../print/drivers/pdf/source/Report.cpp | 95 +
src/add-ons/print/drivers/pdf/source/Report.h | 94 +
.../print/drivers/pdf/source/Scanner.cpp | 146 +
.../print/drivers/pdf/source/Scanner.h | 65 +
.../print/drivers/pdf/source/StatusWindow.cpp | 214 +
.../print/drivers/pdf/source/StatusWindow.h | 69 +
.../print/drivers/pdf/source/SubPath.cpp | 127 +
.../print/drivers/pdf/source/SubPath.h | 66 +
.../print/drivers/pdf/source/Utils.cpp | 138 +
src/add-ons/print/drivers/pdf/source/Utils.h | 160 +
.../print/drivers/pdf/source/XReferences.cpp | 436 +
.../print/drivers/pdf/source/XReferences.h | 234 +
.../print/drivers/pdf/source/_CopyAndRestart | 11 +
src/add-ons/print/drivers/pdf/source/cns1.h | 11120 +++++++
.../print/drivers/pdf/source/enc_range.h | 11 +
src/add-ons/print/drivers/pdf/source/gb1.h | 23963 ++++++++++++++++
.../print/drivers/pdf/source/japanese.h | 8478 ++++++
src/add-ons/print/drivers/pdf/source/korean.h | 15848 ++++++++++
src/add-ons/print/drivers/pdf/source/pdflib.h | 943 +
.../print/drivers/pdf/source/unicode0.h | 260 +
.../print/drivers/pdf/source/unicode1.h | 260 +
.../print/drivers/pdf/source/unicode2.h | 260 +
.../print/drivers/pdf/source/unicode3.h | 260 +
.../print/drivers/pdf/source/unicode4.h | 31 +
src/add-ons/print/drivers/pdf/xrefs/Deutsch | 7 +
src/add-ons/print/drivers/pdf/xrefs/English | 18 +
.../transports/ipp/HttpURLConnection.cpp | 327 +
.../print/transports/ipp/HttpURLConnection.h | 148 +
src/add-ons/print/transports/ipp/Ipp.cpp | 31 +
.../print/transports/ipp/IppContent.cpp | 1061 +
src/add-ons/print/transports/ipp/IppContent.h | 455 +
src/add-ons/print/transports/ipp/IppDefs.h | 11 +
.../print/transports/ipp/IppSetupDlg.cpp | 203 +
.../print/transports/ipp/IppSetupDlg.h | 24 +
.../print/transports/ipp/IppTransport.cpp | 148 +
.../print/transports/ipp/IppTransport.h | 47 +
.../print/transports/ipp/IppURLConnection.cpp | 108 +
.../print/transports/ipp/IppURLConnection.h | 34 +
src/add-ons/print/transports/ipp/URL.cpp | 102 +
src/add-ons/print/transports/ipp/URL.h | 68 +
src/add-ons/print/transports/lpr/Lpr.cpp | 31 +
src/add-ons/print/transports/lpr/LprDefs.h | 12 +
.../print/transports/lpr/LprSetupDlg.cpp | 203 +
.../print/transports/lpr/LprSetupDlg.h | 24 +
.../print/transports/lpr/LprTransport.cpp | 144 +
.../print/transports/lpr/LprTransport.h | 48 +
.../print/transports/lpr/LpsClient.cpp | 221 +
src/add-ons/print/transports/lpr/LpsClient.h | 56 +
.../transports/print_to_file/FileSelector.cpp | 91 +
.../transports/print_to_file/FileSelector.h | 38 +
.../print_to_file/print_transport.cpp | 84 +
.../print/transports/shared/DbgMsg.cpp | 237 +
src/add-ons/print/transports/shared/DbgMsg.h | 20 +
.../print/transports/shared/Socket.cpp | 193 +
src/add-ons/print/transports/shared/Socket.h | 68 +
.../print/transports/shared/SocketStream.h | 8 +
.../print/transports/shared/SocketStream1.cpp | 124 +
.../print/transports/shared/SocketStream1.h | 81 +
.../print/transports/shared/SocketStream2.cpp | 127 +
.../print/transports/shared/SocketStream2.h | 60 +
src/apps/Jamfile | 0
src/apps/bin/alert.cpp | 228 +
src/apps/bin/chop.c | 260 +
src/apps/bin/clipboard.cpp | 175 +
src/apps/bin/echo.c | 48 +
src/apps/bin/gnu/chgrp.c | 233 +
src/apps/bin/gnu/chmod.c | 396 +
src/apps/bin/gnu/chown-core.c | 366 +
src/apps/bin/gnu/chown-core.h | 89 +
src/apps/bin/gnu/chown.c | 247 +
src/apps/bin/gnu/copy.c | 1219 +
src/apps/bin/gnu/copy.h | 161 +
src/apps/bin/gnu/cp-hash.c | 235 +
src/apps/bin/gnu/cp-hash.h | 8 +
src/apps/bin/gnu/cp.c | 911 +
src/apps/bin/gnu/dd.c | 1202 +
src/apps/bin/gnu/df.c | 952 +
src/apps/bin/gnu/du.c | 794 +
src/apps/bin/gnu/install.c | 643 +
src/apps/bin/gnu/ln.c | 563 +
src/apps/bin/gnu/ls-dir.c | 2 +
src/apps/bin/gnu/ls-ls.c | 2 +
src/apps/bin/gnu/ls-vdir.c | 2 +
src/apps/bin/gnu/ls.c | 3338 +++
src/apps/bin/gnu/ls.h | 10 +
src/apps/bin/gnu/mkdir.c | 205 +
src/apps/bin/gnu/mkfifo.c | 147 +
src/apps/bin/gnu/mknod.c | 238 +
src/apps/bin/gnu/mv.c | 495 +
src/apps/bin/gnu/remove.c | 946 +
src/apps/bin/gnu/remove.h | 51 +
src/apps/bin/gnu/rm.c | 205 +
src/apps/bin/gnu/rmdir.c | 239 +
src/apps/bin/gnu/sync.c | 74 +
src/apps/bin/gnu/sys2.h | 606 +
src/apps/bin/gnu/system.h | 278 +
src/apps/bin/gnu/touch.c | 366 +
src/apps/bin/hd.c | 206 +
src/apps/bin/listarea.c | 102 +
src/apps/bin/listdev/cm_wrapper.c | 142 +
src/apps/bin/listdev/cm_wrapper.h | 25 +
src/apps/bin/listdev/config_driver.h | 29 +
src/apps/bin/listdev/listdev.c | 305 +
src/apps/bin/listimage.c | 79 +
src/apps/bin/listport.c | 97 +
src/apps/bin/listsem.c | 91 +
src/apps/bin/mkdos/fat.h | 169 +
src/apps/bin/mkdos/mkdos.cpp | 620 +
src/apps/bin/pc/lex.h | 32 +
src/apps/bin/pc/pc.c | 1113 +
src/apps/bin/prio.c | 39 +
src/apps/bin/ps.c | 59 +
src/apps/bin/renice.c | 125 +
src/apps/bin/rescan.c | 32 +
src/apps/bin/roster.cpp | 92 +
src/apps/bin/unchop.c | 189 +
src/apps/bin/waitfor.c | 33 +
src/apps/bin/wc.c | 172 +
src/apps/clock/Clock.rsrc | Bin 0 -> 67437 bytes
src/apps/clock/LICENSE | 31 +
src/apps/clock/README.Clock | 22 +
src/apps/clock/cl_view.cpp | 415 +
src/apps/clock/cl_view.h | 91 +
src/apps/clock/cl_wind.cpp | 55 +
src/apps/clock/cl_wind.h | 26 +
src/apps/clock/clock.cpp | 114 +
src/apps/clock/clock.h | 32 +
src/apps/magnify/LICENSE | 31 +
src/apps/magnify/Magnify.rsrc | Bin 0 -> 4194 bytes
src/apps/magnify/main.cpp | 2010 ++
src/apps/magnify/main.h | 270 +
src/apps/pulse/BottomPrefsView.cpp | 53 +
src/apps/pulse/BottomPrefsView.h | 22 +
src/apps/pulse/CPUButton.cpp | 200 +
src/apps/pulse/CPUButton.h | 42 +
src/apps/pulse/Common.h | 69 +
src/apps/pulse/ConfigView.cpp | 309 +
src/apps/pulse/ConfigView.h | 47 +
src/apps/pulse/DeskbarPulseView.cpp | 189 +
src/apps/pulse/DeskbarPulseView.h | 40 +
src/apps/pulse/LICENSE | 31 +
src/apps/pulse/MiniPulseView.cpp | 149 +
src/apps/pulse/MiniPulseView.h | 34 +
src/apps/pulse/NormalPulseView.cpp | 344 +
src/apps/pulse/NormalPulseView.h | 38 +
src/apps/pulse/Pictures | 763 +
src/apps/pulse/Prefs.cpp | 235 +
src/apps/pulse/Prefs.h | 45 +
src/apps/pulse/PrefsWindow.cpp | 98 +
src/apps/pulse/PrefsWindow.h | 29 +
src/apps/pulse/ProgressBar.cpp | 137 +
src/apps/pulse/ProgressBar.h | 44 +
src/apps/pulse/Pulse.rsrc | Bin 0 -> 4189 bytes
src/apps/pulse/PulseApp.cpp | 206 +
src/apps/pulse/PulseApp.h | 33 +
src/apps/pulse/PulseView.cpp | 126 +
src/apps/pulse/PulseView.h | 42 +
src/apps/pulse/PulseWindow.cpp | 152 +
src/apps/pulse/PulseWindow.h | 34 +
src/kernel/Jamfile | 867 +
src/kernel/TODO | 42 +
src/kernel/apps/Jamfile | 19 +
src/kernel/apps/echo/Jamfile | 3 +
src/kernel/apps/echo/main.c | 81 +
src/kernel/apps/false_main.c | 13 +
src/kernel/apps/fibo_main.c | 69 +
src/kernel/apps/filetest/Jamfile | 3 +
src/kernel/apps/filetest/main.c | 51 +
src/kernel/apps/fortune/Jamfile | 3 +
src/kernel/apps/fortune/fortunes | 9 +
src/kernel/apps/fortune/main.c | 68 +
src/kernel/apps/hostname/Jamfile | 3 +
src/kernel/apps/hostname/main.c | 42 +
src/kernel/apps/init.c | 63 +
src/kernel/apps/ls/Jamfile | 3 +
src/kernel/apps/ls/main.c | 148 +
src/kernel/apps/mount/Jamfile | 3 +
src/kernel/apps/mount/main.c | 28 +
src/kernel/apps/ps/Jamfile | 3 +
src/kernel/apps/ps/main.c | 74 +
src/kernel/apps/rld/Jamfile | 10 +
src/kernel/apps/rld/arch/rldreloc.inc | 21 +
src/kernel/apps/rld/arch/x86/rld.ld | 63 +
src/kernel/apps/rld/arch/x86/rldreloc.inc | 132 +
src/kernel/apps/rld/rld.c | 57 +
src/kernel/apps/rld/rld0.c | 16 +
src/kernel/apps/rld/rld_priv.h | 45 +
src/kernel/apps/rld/rldaux.c | 22 +
src/kernel/apps/rld/rldbeos.c | 34 +
src/kernel/apps/rld/rldelf.c | 1066 +
src/kernel/apps/rld/rldheap.c | 84 +
src/kernel/apps/rld/rldunix.c | 33 +
src/kernel/apps/shell/Jamfile | 12 +
src/kernel/apps/shell/args.c | 59 +
src/kernel/apps/shell/args.h | 9 +
src/kernel/apps/shell/commands.c | 205 +
src/kernel/apps/shell/commands.h | 21 +
src/kernel/apps/shell/file_utils.c | 113 +
src/kernel/apps/shell/file_utils.h | 10 +
src/kernel/apps/shell/main.c | 98 +
src/kernel/apps/shell/parse.c | 585 +
src/kernel/apps/shell/parse.h | 22 +
src/kernel/apps/shell/script.c | 124 +
src/kernel/apps/shell/script.h | 27 +
src/kernel/apps/shell/shell_defs.h | 70 +
src/kernel/apps/shell/shell_history.c | 69 +
src/kernel/apps/shell/shell_history.h | 16 +
src/kernel/apps/shell/shell_vars.c | 372 +
src/kernel/apps/shell/shell_vars.h | 45 +
src/kernel/apps/shell/statements.c | 767 +
src/kernel/apps/shell/statements.h | 18 +
src/kernel/apps/sockettest/Jamfile | 3 +
src/kernel/apps/sockettest/main.c | 56 +
src/kernel/apps/testapp/Jamfile | 3 +
src/kernel/apps/testapp/main.c | 505 +
src/kernel/apps/testdigit/Jamfile | 3 +
src/kernel/apps/testdigit/main.c | 47 +
src/kernel/apps/tests/Jamfile | 8 +
src/kernel/apps/tests/fops_test.c | 67 +
src/kernel/apps/tests/thread_test.c | 64 +
src/kernel/apps/true_main.c | 13 +
src/kernel/apps/uname/Jamfile | 3 +
src/kernel/apps/uname/main.c | 193 +
src/kernel/apps/unmount/Jamfile | 3 +
src/kernel/apps/unmount/main.c | 27 +
src/kernel/boot/Jamfile | 8 +
src/kernel/boot/arch/Jamfile | 10 +
src/kernel/boot/arch/alpha/Jamfile | 2 +
src/kernel/boot/arch/alpha/stage2.c | 11 +
src/kernel/boot/arch/alpha/stage2.ld | 32 +
src/kernel/boot/arch/alpha/stage2.mk | 31 +
src/kernel/boot/arch/m68k/Jamfile | 2 +
src/kernel/boot/arch/m68k/boot.mk | 93 +
src/kernel/boot/arch/m68k/config.ini | 14 +
src/kernel/boot/arch/m68k/stage1.S | 51 +
src/kernel/boot/arch/m68k/stage1.ld | 44 +
src/kernel/boot/arch/m68k/stage2.c | 67 +
src/kernel/boot/arch/m68k/stage2.ld | 43 +
src/kernel/boot/arch/m68k/stage2_asm.S | 37 +
src/kernel/boot/arch/m68k/stage2_nextmon.c | 184 +
src/kernel/boot/arch/m68k/stage2_text.c | 30 +
src/kernel/boot/arch/mips/Jamfile | 2 +
src/kernel/boot/arch/mips/boot.mk | 78 +
src/kernel/boot/arch/mips/config.ini | 24 +
src/kernel/boot/arch/mips/stage1.S | 14 +
src/kernel/boot/arch/mips/stage1.ld | 44 +
src/kernel/boot/arch/mips/stage2.c | 28 +
src/kernel/boot/arch/mips/stage2.ld | 40 +
src/kernel/boot/arch/ppc/Jamfile | 2 +
src/kernel/boot/arch/ppc/boot.mk | 80 +
src/kernel/boot/arch/ppc/config.ini | 33 +
src/kernel/boot/arch/ppc/stage1.S | 47 +
src/kernel/boot/arch/ppc/stage1.ld | 32 +
src/kernel/boot/arch/ppc/stage2.c | 34 +
src/kernel/boot/arch/ppc/stage2.ld | 32 +
src/kernel/boot/arch/ppc/stage2_asm.S | 242 +
src/kernel/boot/arch/ppc/stage2_faults.c | 141 +
src/kernel/boot/arch/ppc/stage2_mmu.c | 355 +
src/kernel/boot/arch/ppc/stage2_of.c | 197 +
src/kernel/boot/arch/ppc/stage2_text.c | 242 +
src/kernel/boot/arch/sh4/Jamfile | 2 +
src/kernel/boot/arch/sh4/boot.mk | 80 +
src/kernel/boot/arch/sh4/config.ini | 102 +
src/kernel/boot/arch/sh4/mmu.c | 81 +
src/kernel/boot/arch/sh4/serial.c | 109 +
src/kernel/boot/arch/sh4/stage1.S | 39 +
src/kernel/boot/arch/sh4/stage2.c | 213 +
src/kernel/boot/arch/sh4/stage2.ld | 38 +
src/kernel/boot/arch/sh4/vcpu.S | 575 +
src/kernel/boot/arch/sh4/vcpu_c.c | 448 +
src/kernel/boot/arch/sparc/Jamfile | 2 +
src/kernel/boot/arch/sparc/closeall.c | 7 +
src/kernel/boot/arch/sparc/dvma.c | 122 +
src/kernel/boot/arch/sparc/libkern/__main.c | 42 +
src/kernel/boot/arch/sparc/libkern/bzero.c | 60 +
src/kernel/boot/arch/sparc/libkern/udiv.S | 428 +
src/kernel/boot/arch/sparc/libkern/urem.S | 428 +
src/kernel/boot/arch/sparc/libsa/alloc.c | 233 +
src/kernel/boot/arch/sparc/libsa/exit.c | 74 +
src/kernel/boot/arch/sparc/libsa/memcmp.c | 61 +
src/kernel/boot/arch/sparc/libsa/memcpy.c | 64 +
src/kernel/boot/arch/sparc/libsa/memset.c | 52 +
src/kernel/boot/arch/sparc/libsa/printf.c | 257 +
src/kernel/boot/arch/sparc/libsa/strcmp.c | 47 +
src/kernel/boot/arch/sparc/promdev.c | 806 +
src/kernel/boot/arch/sparc/srt0.S | 180 +
src/kernel/boot/arch/sparc/stage2.c | 263 +
src/kernel/boot/arch/sparc/stage2.mk | 58 +
src/kernel/boot/arch/sparc64/Jamfile | 2 +
src/kernel/boot/arch/sparc64/stage2.mk | 33 +
src/kernel/boot/arch/x86/Jamfile | 10 +
src/kernel/boot/arch/x86/bootblock.asm | 360 +
src/kernel/boot/arch/x86/bootblock.bin | Bin 0 -> 1024 bytes
src/kernel/boot/arch/x86/smp_boot.c | 518 +
src/kernel/boot/arch/x86/smp_trampoline.S | 69 +
src/kernel/boot/arch/x86/stage2.c | 550 +
src/kernel/boot/arch/x86/stage2.ld | 32 +
src/kernel/boot/arch/x86/stage2_asm.S | 95 +
src/kernel/boot/bin2asm.c | 42 +
src/kernel/boot/bin2h.c | 30 +
src/kernel/boot/bootmaker.c | 563 +
src/kernel/boot/makeflop.c | 84 +
src/kernel/core/Jamfile | 43 +
src/kernel/core/addons/Jamfile | 4 +
src/kernel/core/addons/bus_managers/Jamfile | 13 +
.../core/addons/bus_managers/bus_init.c | 47 +
src/kernel/core/addons/bus_managers/bus_man.c | 183 +
.../core/addons/bus_managers/isa/Jamfile | 3 +
src/kernel/core/addons/bus_managers/isa/isa.c | 136 +
.../core/addons/bus_managers/pci/Jamfile | 3 +
src/kernel/core/addons/bus_managers/pci/pci.c | 193 +
.../core/addons/bus_managers/pci/pci_bus.c | 328 +
src/kernel/core/arch/Jamfile | 3 +
src/kernel/core/arch/m68k/arch_kernel.mk | 25 +
src/kernel/core/arch/m68k/kernel.ld | 65 +
src/kernel/core/arch/mips/arch_asm.S | 28 +
src/kernel/core/arch/mips/arch_cpu.c | 18 +
src/kernel/core/arch/mips/arch_dbg_console.c | 47 +
src/kernel/core/arch/mips/arch_debug.c | 8 +
src/kernel/core/arch/mips/arch_faults.c | 11 +
src/kernel/core/arch/mips/arch_int.c | 35 +
src/kernel/core/arch/mips/arch_kernel.mk | 35 +
src/kernel/core/arch/mips/arch_pmap.c | 55 +
src/kernel/core/arch/mips/arch_smp.c | 27 +
src/kernel/core/arch/mips/arch_thread.c | 51 +
src/kernel/core/arch/mips/arch_timer.c | 25 +
src/kernel/core/arch/mips/arch_vm.c | 24 +
src/kernel/core/arch/mips/kernel.ld | 42 +
src/kernel/core/arch/ppc/arch_asm.S | 37 +
src/kernel/core/arch/ppc/arch_cpu.c | 101 +
src/kernel/core/arch/ppc/arch_dbg_console.c | 30 +
src/kernel/core/arch/ppc/arch_debug.c | 9 +
src/kernel/core/arch/ppc/arch_faults.c | 11 +
src/kernel/core/arch/ppc/arch_int.c | 33 +
src/kernel/core/arch/ppc/arch_kernel.mk | 35 +
src/kernel/core/arch/ppc/arch_smp.c | 28 +
src/kernel/core/arch/ppc/arch_thread.c | 39 +
src/kernel/core/arch/ppc/arch_timer.c | 21 +
src/kernel/core/arch/ppc/arch_vm.c | 22 +
.../core/arch/ppc/arch_vm_translation_map.c | 107 +
src/kernel/core/arch/ppc/kernel.ld | 33 +
src/kernel/core/arch/sh4/addon.ld | 69 +
src/kernel/core/arch/sh4/arch_asm.S | 312 +
src/kernel/core/arch/sh4/arch_cpu.c | 173 +
src/kernel/core/arch/sh4/arch_dbg_console.c | 115 +
src/kernel/core/arch/sh4/arch_debug.c | 8 +
src/kernel/core/arch/sh4/arch_faults.c | 11 +
src/kernel/core/arch/sh4/arch_int.c | 176 +
src/kernel/core/arch/sh4/arch_pmap.c | 151 +
src/kernel/core/arch/sh4/arch_smp.c | 27 +
src/kernel/core/arch/sh4/arch_thread.c | 134 +
src/kernel/core/arch/sh4/arch_timer.c | 147 +
src/kernel/core/arch/sh4/arch_vm.c | 33 +
.../core/arch/sh4/arch_vm_translation_map.c | 424 +
src/kernel/core/arch/sh4/kernel.ld | 69 +
src/kernel/core/arch/sparc/arch_kernel.mk | 24 +
src/kernel/core/arch/sparc64/arch_kernel.mk | 24 +
src/kernel/core/arch/x86/Jamfile | 18 +
src/kernel/core/arch/x86/addon.ld | 65 +
src/kernel/core/arch/x86/arch_cpu.c | 188 +
src/kernel/core/arch/x86/arch_dbg_console.c | 93 +
src/kernel/core/arch/x86/arch_debug.c | 9 +
src/kernel/core/arch/x86/arch_faults.c | 43 +
src/kernel/core/arch/x86/arch_int.c | 326 +
src/kernel/core/arch/x86/arch_interrupts.S | 85 +
src/kernel/core/arch/x86/arch_smp.c | 192 +
src/kernel/core/arch/x86/arch_thread.c | 156 +
src/kernel/core/arch/x86/arch_timer.c | 79 +
src/kernel/core/arch/x86/arch_vm.c | 60 +
.../core/arch/x86/arch_vm_translation_map.c | 815 +
src/kernel/core/arch/x86/arch_x86.S | 244 +
src/kernel/core/arch/x86/int.c | 0
src/kernel/core/arch/x86/kernel.ld | 65 +
src/kernel/core/cbuf.c | 876 +
src/kernel/core/console.c | 75 +
src/kernel/core/cpu.c | 156 +
src/kernel/core/debug.c | 380 +
src/kernel/core/elf.c | 977 +
src/kernel/core/faults.c | 64 +
src/kernel/core/fd.c | 456 +
src/kernel/core/fs/Jamfile | 10 +
src/kernel/core/fs/bootfs.c | 959 +
src/kernel/core/fs/devfs.c | 1108 +
src/kernel/core/fs/rootfs.c | 813 +
src/kernel/core/fs/vfs.c | 2521 ++
src/kernel/core/gdb.c | 532 +
src/kernel/core/heap.c | 289 +
src/kernel/core/int.c | 146 +
src/kernel/core/khash.c | 210 +
src/kernel/core/linkhack.c | 0
src/kernel/core/lock.c | 120 +
src/kernel/core/main.c | 164 +
src/kernel/core/misc.c | 50 +
src/kernel/core/module.c | 1098 +
src/kernel/core/port.c | 1187 +
src/kernel/core/queue.c | 152 +
src/kernel/core/sem.c | 893 +
src/kernel/core/smp.c | 501 +
src/kernel/core/syscalls.c | 301 +
src/kernel/core/sysctl.c | 253 +
src/kernel/core/thread.c | 2086 ++
src/kernel/core/timer.c | 270 +
src/kernel/core/vm/Jamfile | 15 +
src/kernel/core/vm/vm.c | 2179 ++
src/kernel/core/vm/vm_cache.c | 282 +
src/kernel/core/vm/vm_daemons.c | 209 +
src/kernel/core/vm/vm_page.c | 797 +
.../core/vm/vm_store_anonymous_noswap.c | 84 +
src/kernel/core/vm/vm_store_device.c | 115 +
src/kernel/core/vm/vm_store_null.c | 75 +
src/kernel/core/vm/vm_store_vnode.c | 101 +
src/kernel/core/vm/vm_tests.c | 356 +
src/kernel/drivers/Jamfile | 18 +
src/kernel/drivers/arch/Jamfile | 3 +
src/kernel/drivers/arch/x86/Jamfile | 5 +
src/kernel/drivers/arch/x86/console/Jamfile | 3 +
src/kernel/drivers/arch/x86/console/console.c | 304 +
src/kernel/drivers/arch/x86/ide/Jamfile | 3 +
src/kernel/drivers/arch/x86/ide/ide.c | 390 +
src/kernel/drivers/arch/x86/ide/ide_raw.c | 718 +
src/kernel/drivers/arch/x86/keyboard/Jamfile | 3 +
.../drivers/arch/x86/keyboard/keyboard.c | 317 +
src/kernel/drivers/arch/x86/ps2mouse/Jamfile | 3 +
.../drivers/arch/x86/ps2mouse/ps2mouse.c | 340 +
src/kernel/drivers/beos.c | 516 +
src/kernel/drivers/dev.c | 100 +
src/kernel/drivers/devs.c | 52 +
src/kernel/drivers/fb_console/Jamfile | 4 +
src/kernel/drivers/fb_console/fb_console.c | 477 +
src/kernel/glue/Jamfile | 4 +
src/kernel/glue/crt0.c | 56 +
src/kernel/glue/lib0.c | 56 +
src/kernel/ldscripts/sh4/library.ld | 73 +
src/kernel/ldscripts/x86/app.ld | 73 +
src/kernel/ldscripts/x86/library.ld | 73 +
src/kernel/libroot/Jamfile | 3 +
src/kernel/libroot/libroot.c | 237 +
src/kernel/libroot/libroot.h | 77 +
src/kernel/libroot/libroot_types.h | 227 +
src/kits/app/Application.cpp | 364 +
src/kits/app/Cursor.cpp | 103 +
src/kits/app/Handler.cpp | 971 +
src/kits/app/Invoker.cpp | 244 +
src/kits/app/Jamfile | 3 +
src/kits/app/Looper.cpp | 1428 +
src/kits/app/MessageFilter.cpp | 165 +
src/kits/app/MessageQueue.cpp | 434 +
src/kits/app/Messenger.cpp | 624 +
src/kits/app/PortLink.cpp | 438 +
src/kits/app/TokenSpace.cpp | 126 +
src/kits/app/app.src | 10 +
src/kits/interface/Alert.cpp | 824 +
src/kits/interface/Box.cpp | 363 +
src/kits/interface/Button.cpp | 521 +
src/kits/interface/CheckBox.cpp | 389 +
src/kits/interface/Control.cpp | 539 +
src/kits/interface/Input.cpp | 155 +
src/kits/interface/Jamfile | 3 +
src/kits/interface/ListItem.cpp | 183 +
src/kits/interface/ListView.cpp | 1742 ++
src/kits/interface/Point.cpp | 101 +
src/kits/interface/PrintJob.cpp | 265 +
src/kits/interface/RadioButton.cpp | 404 +
src/kits/interface/Rect.cpp | 245 +
src/kits/interface/StatusBar.cpp | 559 +
src/kits/interface/StringItem.cpp | 148 +
src/kits/interface/StringView.cpp | 277 +
src/kits/interface/TextControl.cpp | 442 +
src/kits/interface/TextInput.cpp | 242 +
src/kits/interface/interface.src | 14 +
src/kits/media/!missing_symbols.cpp | 134 +
src/kits/media/Buffer.cpp | 284 +
src/kits/media/BufferConsumer.cpp | 560 +
src/kits/media/BufferGroup.cpp | 406 +
src/kits/media/BufferIdCache.cpp | 84 +
src/kits/media/BufferIdCache.h | 34 +
src/kits/media/BufferProducer.cpp | 571 +
src/kits/media/ChannelMixer.cpp | 160 +
src/kits/media/Controllable.cpp | 164 +
src/kits/media/DormantNodeManager.cpp | 5 +
src/kits/media/DormantNodeManager.h | 8 +
src/kits/media/FileInterface.cpp | 73 +
src/kits/media/MediaAddOn.cpp | 619 +
src/kits/media/MediaDecoder.cpp | 189 +
src/kits/media/MediaDefs.cpp | 484 +
src/kits/media/MediaEncoder.cpp | 211 +
src/kits/media/MediaEventLooper.cpp | 529 +
src/kits/media/MediaFile.cpp | 293 +
src/kits/media/MediaFiles.cpp | 119 +
src/kits/media/MediaFormats.cpp | 341 +
src/kits/media/MediaNode.cpp | 716 +
src/kits/media/MediaRoster.cpp | 1500 +
src/kits/media/MediaTheme.cpp | 154 +
src/kits/media/MediaTrack.cpp | 439 +
src/kits/media/OldAudioModule.cpp | 462 +
src/kits/media/OldAudioModule.h | 142 +
src/kits/media/OldAudioStream.cpp | 279 +
src/kits/media/OldAudioStream.h | 94 +
src/kits/media/OldBufferMsgs.h | 130 +
src/kits/media/OldBufferStream.cpp | 680 +
src/kits/media/OldBufferStream.h | 310 +
src/kits/media/OldBufferStreamManager.cpp | 287 +
src/kits/media/OldBufferStreamManager.h | 189 +
src/kits/media/OldMediaDefs.h | 83 +
src/kits/media/OldMediaKit.h | 17 +
src/kits/media/OldMediaModule.cpp | 692 +
src/kits/media/OldMediaModule.h | 218 +
src/kits/media/OldSoundFile.cpp | 367 +
src/kits/media/OldSoundFile.h | 98 +
src/kits/media/OldSubscriber.cpp | 169 +
src/kits/media/OldSubscriber.h | 100 +
src/kits/media/ParameterWeb.cpp | 3153 ++
src/kits/media/PlaySound.cpp | 34 +
src/kits/media/PortPool.cpp | 86 +
src/kits/media/RealtimeAlloc.cpp | 141 +
src/kits/media/SampleConverter.cpp | 292 +
src/kits/media/SamplingrateConverter.cpp | 389 +
src/kits/media/SharedBufferList.cpp | 312 +
src/kits/media/Sound.cpp | 187 +
src/kits/media/SoundFile.cpp | 344 +
src/kits/media/SoundPlayNode.cpp | 438 +
src/kits/media/SoundPlayNode.h | 91 +
src/kits/media/SoundPlayer.cpp | 541 +
src/kits/media/SystemTimeSource.cpp | 44 +
src/kits/media/SystemTimeSource.h | 31 +
src/kits/media/TimeCode.cpp | 270 +
src/kits/media/TimeSource.cpp | 256 +
src/kits/media/TimedEventQueue.cpp | 301 +
src/kits/media/TimedEventQueuePrivate.cpp | 595 +
src/kits/media/TimedEventQueuePrivate.h | 78 +
src/kits/media/TrackReader.cpp | 224 +
src/kits/media/TrackReader.h | 45 +
src/kits/media/VolumeControl.cpp | 58 +
src/kits/midi/Midi.cpp | 334 +
src/kits/midi/MidiEvent.cpp | 10 +
src/kits/midi/MidiEvent.h | 88 +
src/kits/midi/MidiStore.cpp | 606 +
src/kits/midi/MidiText.cpp | 117 +
src/kits/screensaver/ScreenSaver.cpp | 157 +
src/kits/storage/Directory.cpp | 978 +
src/kits/storage/Entry.cpp | 1136 +
src/kits/storage/EntryList.cpp | 107 +
src/kits/storage/File.cpp | 525 +
src/kits/storage/FindDirectory.cpp | 308 +
src/kits/storage/Jamfile | 52 +
src/kits/storage/LibBeAdapter.cpp | 44 +
src/kits/storage/Mime.cpp | 78 +
src/kits/storage/MimeType.cpp | 1002 +
src/kits/storage/Node.cpp | 744 +
src/kits/storage/Node.notes | 11 +
src/kits/storage/NodeInfo.cpp | 294 +
src/kits/storage/OffsetFile.cpp | 171 +
src/kits/storage/Path.cpp | 716 +
src/kits/storage/Query.cpp | 772 +
src/kits/storage/QueryPredicate.cpp | 485 +
src/kits/storage/ResourceFile.cpp | 1236 +
src/kits/storage/ResourceItem.cpp | 191 +
src/kits/storage/ResourceStrings.cpp | 402 +
src/kits/storage/Resources.cpp | 848 +
src/kits/storage/ResourcesContainer.cpp | 211 +
src/kits/storage/Statable.cpp | 324 +
src/kits/storage/SymLink.cpp | 325 +
src/kits/storage/Volume.cpp | 585 +
src/kits/storage/kernel_interface.POSIX.cpp | 1139 +
src/kits/storage/storage_support.cpp | 318 +
src/kits/support/Archivable.cpp | 571 +
src/kits/support/ByteOrder.cpp | 22 +
src/kits/support/DataIO.cpp | 10 +
src/kits/support/Flattenable.cpp | 33 +
src/kits/support/Jamfile | 1 +
src/kits/support/List.cpp | 305 +
src/kits/support/Locker.cpp | 297 +
src/kits/support/MallocIO.cpp | 176 +
src/kits/support/StopWatch.cpp | 74 +
src/kits/support/String.cpp | 9 +
src/kits/support/support.src | 7 +
src/kits/translation/BitmapStream.cpp | 486 +
src/kits/translation/Jamfile | 0
src/kits/translation/R4xTranslator.cpp | 320 +
src/kits/translation/TranslationUtils.cpp | 964 +
src/kits/translation/Translator.cpp | 356 +
src/kits/translation/TranslatorRoster.cpp | 1686 ++
src/prefs/Jamfile | 3 +
src/prefs/appearance/APRMain.cpp | 23 +
src/prefs/appearance/APRMain.h | 14 +
src/prefs/appearance/APRView.cpp | 414 +
src/prefs/appearance/APRView.h | 40 +
src/prefs/appearance/APRWindow.cpp | 15 +
src/prefs/appearance/APRWindow.h | 15 +
src/prefs/appearance/PortLink.cpp | 438 +
src/prefs/appearance/PortLink.h | 43 +
.../datatranslations/DataTranslations.cpp | 196 +
src/prefs/datatranslations/DataTranslations.h | 41 +
.../datatranslations/DataTranslations.rsrc | Bin 0 -> 4229 bytes
.../DataTranslationsMessages.h | 15 +
.../DataTranslationsSettings.cpp | 68 +
.../DataTranslationsSettings.h | 17 +
.../datatranslations/DataTranslationsView.cpp | 65 +
.../datatranslations/DataTranslationsView.h | 31 +
.../DataTranslationsWindow.cpp | 279 +
.../datatranslations/DataTranslationsWindow.h | 77 +
src/prefs/drivesetup/MainWindow.cpp | 208 +
src/prefs/drivesetup/MainWindow.h | 85 +
src/prefs/drivesetup/PosSettings.cpp | 94 +
src/prefs/drivesetup/PosSettings.h | 21 +
src/prefs/drivesetup/Resource.rsrc | Bin 0 -> 4225 bytes
src/prefs/drivesetup/main.cpp | 117 +
src/prefs/drivesetup/main.h | 53 +
src/prefs/drivesetup/structs.h | 32 +
src/prefs/dun/DUN.cpp | 71 +
src/prefs/dun/DUN.h | 21 +
src/prefs/dun/DUN.rsrc | Bin 0 -> 4260 bytes
src/prefs/dun/DUNView.cpp | 30 +
src/prefs/dun/DUNView.h | 22 +
src/prefs/dun/DUNWindow.cpp | 271 +
src/prefs/dun/DUNWindow.h | 53 +
src/prefs/dun/ModemWindow.cpp | 185 +
src/prefs/dun/ModemWindow.h | 45 +
src/prefs/fonts/.doxygen-conf | 691 +
src/prefs/fonts/ButtonView.cpp | 76 +
src/prefs/fonts/ButtonView.h | 53 +
src/prefs/fonts/CacheView.cpp | 163 +
src/prefs/fonts/CacheView.h | 92 +
src/prefs/fonts/FontSelectionView.cpp | 490 +
src/prefs/fonts/FontSelectionView.h | 188 +
src/prefs/fonts/FontView.cpp | 86 +
src/prefs/fonts/FontView.h | 43 +
src/prefs/fonts/MainWindow.cpp | 237 +
src/prefs/fonts/MainWindow.h | 82 +
src/prefs/fonts/Resource.rsrc | Bin 0 -> 4219 bytes
src/prefs/fonts/main.cpp | 59 +
src/prefs/fonts/main.h | 32 +
src/prefs/keyboard/Jamfile | 7 +
src/prefs/keyboard/Keyboard.cpp | 82 +
src/prefs/keyboard/Keyboard.h | 33 +
src/prefs/keyboard/Keyboard.rsrc | Bin 0 -> 6570 bytes
src/prefs/keyboard/KeyboardMessages.h | 17 +
src/prefs/keyboard/KeyboardSettings.cpp | 83 +
src/prefs/keyboard/KeyboardSettings.h | 29 +
src/prefs/keyboard/KeyboardView.cpp | 86 +
src/prefs/keyboard/KeyboardView.h | 32 +
src/prefs/keyboard/KeyboardWindow.cpp | 155 +
src/prefs/keyboard/KeyboardWindow.h | 24 +
src/prefs/keymap/KeymapApplication.cpp | 182 +
src/prefs/keymap/KeymapApplication.h | 32 +
src/prefs/keymap/KeymapListItem.cpp | 28 +
src/prefs/keymap/KeymapListItem.h | 24 +
src/prefs/keymap/KeymapWindow.cpp | 355 +
src/prefs/keymap/KeymapWindow.h | 50 +
src/prefs/keymap/main.cpp | 17 +
src/prefs/media/MediaPrefsApp.cpp | 22 +
src/prefs/media/MediaPrefsApp.h | 12 +
src/prefs/media/MediaPrefsSlider.cpp | 9 +
src/prefs/media/MediaPrefsSlider.h | 10 +
src/prefs/media/MediaPrefsView.cpp | 7 +
src/prefs/media/MediaPrefsView.h | 8 +
src/prefs/media/MediaPrefsWindow.cpp | 65 +
src/prefs/media/MediaPrefsWindow.h | 17 +
src/prefs/menu/BitmapMenuItem.cpp | 60 +
src/prefs/menu/BitmapMenuItem.h | 27 +
src/prefs/menu/ColorPicker.cpp | 20 +
src/prefs/menu/ColorWindow.cpp | 69 +
src/prefs/menu/FontMenu.cpp | 122 +
src/prefs/menu/FontSizeMenu.cpp | 69 +
src/prefs/menu/Jamfile | 7 +
src/prefs/menu/Menu.rsrc | Bin 0 -> 21310 bytes
src/prefs/menu/MenuApp.cpp | 55 +
src/prefs/menu/MenuApp.h | 142 +
src/prefs/menu/MenuBar.cpp | 141 +
src/prefs/menu/MenuWindow.cpp | 202 +
src/prefs/menu/msg.h | 27 +
src/prefs/mouse/Jamfile | 7 +
src/prefs/mouse/Mouse.cpp | 88 +
src/prefs/mouse/Mouse.h | 35 +
src/prefs/mouse/Mouse.rsrc | Bin 0 -> 19741 bytes
src/prefs/mouse/MouseMessages.h | 22 +
src/prefs/mouse/MouseSettings.cpp | 101 +
src/prefs/mouse/MouseSettings.h | 47 +
src/prefs/mouse/MouseView.cpp | 137 +
src/prefs/mouse/MouseView.h | 29 +
src/prefs/mouse/MouseWindow.cpp | 126 +
src/prefs/mouse/MouseWindow.h | 24 +
src/prefs/print/AddPrinterDialog.h | 19 +
src/prefs/print/Globals.cpp | 15 +
src/prefs/print/Globals.h | 8 +
src/prefs/print/Messages.h | 32 +
src/prefs/print/PrinterListView.cpp | 211 +
src/prefs/print/PrinterListView.h | 63 +
src/prefs/print/Printers.FileTypes.rsrc | Bin 0 -> 4210 bytes
src/prefs/print/Printers.cpp | 44 +
src/prefs/print/Printers.h | 37 +
src/prefs/print/PrintersWindow.cpp | 260 +
src/prefs/print/PrintersWindow.h | 46 +
src/prefs/screen/AlertView.cpp | 53 +
src/prefs/screen/AlertView.h | 21 +
src/prefs/screen/AlertWindow.cpp | 100 +
src/prefs/screen/AlertWindow.h | 21 +
src/prefs/screen/Bitmaps.h | 75 +
src/prefs/screen/Constants.h | 25 +
src/prefs/screen/Jamfile | 7 +
src/prefs/screen/RefreshSlider.cpp | 105 +
src/prefs/screen/RefreshSlider.h | 20 +
src/prefs/screen/RefreshView.cpp | 36 +
src/prefs/screen/RefreshView.h | 15 +
src/prefs/screen/RefreshWindow.cpp | 121 +
src/prefs/screen/RefreshWindow.h | 25 +
src/prefs/screen/Screen.cpp | 80 +
src/prefs/screen/Screen.rsrc | Bin 0 -> 4209 bytes
src/prefs/screen/ScreenApplication.h | 19 +
src/prefs/screen/ScreenDrawView.cpp | 243 +
src/prefs/screen/ScreenDrawView.h | 22 +
src/prefs/screen/ScreenSettings.cpp | 49 +
src/prefs/screen/ScreenSettings.h | 21 +
src/prefs/screen/ScreenView.cpp | 33 +
src/prefs/screen/ScreenView.h | 15 +
src/prefs/screen/ScreenWindow.cpp | 1216 +
src/prefs/screen/ScreenWindow.h | 58 +
src/prefs/screensaver/Constants.cpp | 44 +
src/prefs/screensaver/Constants.h | 44 +
src/prefs/screensaver/MouseAreaView.cpp | 132 +
src/prefs/screensaver/MouseAreaView.h | 20 +
.../OBOSScreenSaverPreferences.cpp | 36 +
.../screensaver/OBOSScreenSaverPreferences.h | 16 +
src/prefs/screensaver/PreviewView.cpp | 155 +
src/prefs/screensaver/PreviewView.h | 21 +
src/prefs/screensaver/ScreenSaver.cpp | 416 +
src/prefs/screensaver/ScreenSaver.h | 68 +
src/prefs/screensaver/pwWindow.cpp | 100 +
src/prefs/screensaver/pwWindow.h | 26 +
src/prefs/translation/Common.h | 6 +
.../DataTranslations.FileTypes.rsrc | Bin 0 -> 4223 bytes
src/prefs/translation/LView.cpp | 42 +
src/prefs/translation/LView.h | 26 +
src/prefs/translation/datatrans.cpp | 159 +
src/prefs/translation/datatrans.h | 35 +
src/prefs/translation/transwin.cpp | 244 +
src/prefs/translation/transwin.h | 87 +
src/prefs/virtualmemory/.doxygen-conf | 691 +
src/prefs/virtualmemory/MainWindow.cpp | 263 +
src/prefs/virtualmemory/MainWindow.h | 127 +
src/prefs/virtualmemory/Resource.rsrc | Bin 0 -> 4228 bytes
src/prefs/virtualmemory/VMSettings.cpp | 79 +
src/prefs/virtualmemory/VMSettings.h | 20 +
src/prefs/virtualmemory/main.cpp | 144 +
src/prefs/virtualmemory/main.h | 71 +
src/prefs/workspaces/Jamfile | 7 +
src/prefs/workspaces/Workspaces.cpp | 274 +
src/prefs/workspaces/Workspaces.rsrc | Bin 0 -> 4208 bytes
src/servers/app/proto1/AppServer.cpp | 84 +
src/servers/app/proto1/AppServer.h | 28 +
src/servers/app/proto1/Desktop.cpp | 227 +
src/servers/app/proto1/Desktop.h | 33 +
src/servers/app/proto1/DirectDriver.cpp | 117 +
src/servers/app/proto1/DirectDriver.h | 44 +
src/servers/app/proto1/DisplayDriver.cpp | 34 +
src/servers/app/proto1/DisplayDriver.h | 56 +
src/servers/app/proto1/Globals.h | 7 +
src/servers/app/proto1/GraphicsHooks.cc | 181 +
src/servers/app/proto1/GraphicsHooks.h | 60 +
src/servers/app/proto1/Layer.cpp | 74 +
src/servers/app/proto1/Layer.h | 60 +
src/servers/app/proto1/ServerBitmap.cpp | 134 +
src/servers/app/proto1/ServerBitmap.h | 22 +
src/servers/app/proto1/ServerWindow.cpp | 114 +
src/servers/app/proto1/ServerWindow.h | 70 +
src/servers/app/proto2/AppServer.cpp | 177 +
src/servers/app/proto2/AppServer.h | 27 +
src/servers/app/proto2/PortLink.cpp | 438 +
src/servers/app/proto2/PortLink.h | 43 +
src/servers/app/proto2/README | 31 +
src/servers/app/proto2/ServerApp.cpp | 139 +
src/servers/app/proto2/ServerApp.h | 25 +
src/servers/app/proto2/ServerProtocol.h | 12 +
src/servers/app/proto2/obhey/obhey.c | 25 +
src/servers/app/proto2/obtestapp/OBApp.cpp | 180 +
src/servers/app/proto2/obtestapp/PortLink.cpp | 438 +
src/servers/app/proto2/obtestapp/PortLink.h | 43 +
.../app/proto2/obtestapp/ServerProtocol.h | 12 +
src/servers/app/proto3/AppServer.cpp | 295 +
src/servers/app/proto3/AppServer.h | 33 +
src/servers/app/proto3/DebugTools.cpp | 44 +
src/servers/app/proto3/DebugTools.h | 8 +
src/servers/app/proto3/Desktop.cpp | 227 +
src/servers/app/proto3/Desktop.h | 27 +
src/servers/app/proto3/DirectDriver.cpp | 251 +
src/servers/app/proto3/DirectDriver.h | 46 +
src/servers/app/proto3/DisplayDriver.cpp | 183 +
src/servers/app/proto3/DisplayDriver.h | 111 +
src/servers/app/proto3/Globals.h | 7 +
src/servers/app/proto3/Layer.cpp | 74 +
src/servers/app/proto3/Layer.h | 60 +
src/servers/app/proto3/PortLink.cpp | 438 +
src/servers/app/proto3/PortLink.h | 43 +
src/servers/app/proto3/README | 9 +
src/servers/app/proto3/ServerApp.cpp | 155 +
src/servers/app/proto3/ServerApp.h | 25 +
src/servers/app/proto3/ServerBitmap.cpp | 214 +
src/servers/app/proto3/ServerBitmap.h | 30 +
src/servers/app/proto3/ServerCursor.cpp | 76 +
src/servers/app/proto3/ServerCursor.h | 29 +
src/servers/app/proto3/ServerProtocol.h | 13 +
src/servers/app/proto3/ServerRect.h | 35 +
src/servers/app/proto3/ServerRegion.h | 21 +
src/servers/app/proto3/ServerSprite.cpp | 29 +
src/servers/app/proto3/ServerWindow.cpp | 114 +
src/servers/app/proto3/ServerWindow.h | 70 +
src/servers/app/proto3/SystemPalette.cpp | 327 +
src/servers/app/proto3/SystemPalette.h | 9 +
src/servers/app/proto3/ViewDriver.cpp | 555 +
src/servers/app/proto3/ViewDriver.h | 89 +
src/servers/app/proto4/AppServer.cpp | 323 +
src/servers/app/proto4/AppServer.h | 37 +
src/servers/app/proto4/BUGS | 1 +
src/servers/app/proto4/CHANGES | 19 +
src/servers/app/proto4/DebugTools.cpp | 205 +
src/servers/app/proto4/DebugTools.h | 11 +
src/servers/app/proto4/Desktop.cpp | 338 +
src/servers/app/proto4/Desktop.h | 37 +
src/servers/app/proto4/DirectDriver.cpp | 251 +
src/servers/app/proto4/DirectDriver.h | 46 +
src/servers/app/proto4/DisplayDriver.cpp | 230 +
src/servers/app/proto4/DisplayDriver.h | 124 +
src/servers/app/proto4/Globals.h | 7 +
src/servers/app/proto4/Layer.cpp | 281 +
src/servers/app/proto4/Layer.h | 68 +
src/servers/app/proto4/PortLink.cpp | 438 +
src/servers/app/proto4/PortLink.h | 43 +
src/servers/app/proto4/README | 9 +
src/servers/app/proto4/ServerApp.cpp | 759 +
src/servers/app/proto4/ServerApp.h | 35 +
src/servers/app/proto4/ServerBitmap.cpp | 252 +
src/servers/app/proto4/ServerBitmap.h | 37 +
src/servers/app/proto4/ServerCursor.cpp | 124 +
src/servers/app/proto4/ServerCursor.h | 29 +
src/servers/app/proto4/ServerProtocol.h | 69 +
src/servers/app/proto4/ServerSprite.cpp | 29 +
src/servers/app/proto4/ServerWindow.cpp | 210 +
src/servers/app/proto4/ServerWindow.h | 69 +
src/servers/app/proto4/SystemPalette.cpp | 327 +
src/servers/app/proto4/SystemPalette.h | 9 +
src/servers/app/proto4/ViewDriver.cpp | 1385 +
src/servers/app/proto4/ViewDriver.h | 127 +
src/servers/app/proto4/main.cpp | 16 +
src/servers/app/proto4/obhey/obhey.c | 25 +
src/servers/app/proto4/obtestapp/OBApp.cpp | 639 +
src/servers/app/proto4/obtestapp/OBApp.h | 57 +
src/servers/app/proto4/obtestapp/PortLink.cpp | 438 +
src/servers/app/proto4/obtestapp/PortLink.h | 43 +
.../app/proto4/obtestapp/ServerProtocol.h | 69 +
.../app/proto4/obtestapp/TestBitmap.cpp | 193 +
src/servers/app/proto4/obtestapp/TestBitmap.h | 68 +
src/servers/app/proto5/AppServer.cpp | 552 +
src/servers/app/proto5/AppServer.h | 50 +
src/servers/app/proto5/BUGS | 3 +
src/servers/app/proto5/BeDecorator.cpp | 359 +
src/servers/app/proto5/BeDecorator.h | 40 +
src/servers/app/proto5/DebugTools.cpp | 219 +
src/servers/app/proto5/DebugTools.h | 12 +
src/servers/app/proto5/Decorator.cpp | 133 +
src/servers/app/proto5/Decorator.h | 69 +
src/servers/app/proto5/Desktop.cpp | 403 +
src/servers/app/proto5/Desktop.h | 46 +
src/servers/app/proto5/DisplayDriver.cpp | 242 +
src/servers/app/proto5/DisplayDriver.h | 127 +
src/servers/app/proto5/Globals.h | 7 +
src/servers/app/proto5/Layer.cpp | 735 +
src/servers/app/proto5/Layer.h | 108 +
src/servers/app/proto5/PortLink.cpp | 438 +
src/servers/app/proto5/PortLink.h | 43 +
src/servers/app/proto5/SecondDriver.cpp | 838 +
src/servers/app/proto5/SecondDriver.h | 123 +
src/servers/app/proto5/SecondDriverHelper.h | 435 +
src/servers/app/proto5/ServerApp.cpp | 883 +
src/servers/app/proto5/ServerApp.h | 42 +
src/servers/app/proto5/ServerBitmap.cpp | 257 +
src/servers/app/proto5/ServerBitmap.h | 38 +
src/servers/app/proto5/ServerCursor.cpp | 136 +
src/servers/app/proto5/ServerCursor.h | 31 +
src/servers/app/proto5/ServerProtocol.h | 95 +
src/servers/app/proto5/ServerSprite.cpp | 29 +
src/servers/app/proto5/ServerWindow.cpp | 462 +
src/servers/app/proto5/ServerWindow.h | 73 +
src/servers/app/proto5/SystemPalette.cpp | 327 +
src/servers/app/proto5/SystemPalette.h | 9 +
src/servers/app/proto5/TODO | 3 +
src/servers/app/proto5/ViewDriver.cpp | 1558 +
src/servers/app/proto5/ViewDriver.h | 129 +
src/servers/app/proto5/WindowBorder.cpp | 253 +
src/servers/app/proto5/WindowBorder.h | 37 +
src/servers/app/proto5/YMakDecorator.cpp | 656 +
src/servers/app/proto5/YMakDecorator.h | 49 +
src/servers/app/proto5/main.cpp | 16 +
src/servers/app/proto5/obhey/obhey.c | 25 +
src/servers/app/proto5/router/router.cpp | 134 +
src/servers/app/proto5/router/router.h | 23 +
src/servers/app/proto5/testobapp/BUGS | 0
src/servers/app/proto5/testobapp/CHANGES | 6 +
.../app/proto5/testobapp/DebugTools.cpp | 219 +
src/servers/app/proto5/testobapp/DebugTools.h | 12 +
.../app/proto5/testobapp/OBApplication.cpp | 402 +
.../app/proto5/testobapp/OBApplication.h | 71 +
.../app/proto5/testobapp/OBTestApp.cpp | 30 +
src/servers/app/proto5/testobapp/OBView.cpp | 872 +
src/servers/app/proto5/testobapp/OBView.h | 168 +
src/servers/app/proto5/testobapp/OBWindow.cpp | 443 +
src/servers/app/proto5/testobapp/OBWindow.h | 140 +
src/servers/app/proto5/testobapp/PortLink.cpp | 438 +
src/servers/app/proto5/testobapp/PortLink.h | 43 +
.../app/proto5/testobapp/ServerProtocol.h | 94 +
src/servers/app/proto5/testobapp/TODO | 3 +
src/servers/app/proto6/AppServer.cpp | 584 +
src/servers/app/proto6/AppServer.h | 50 +
src/servers/app/proto6/BeDecorator.cpp | 530 +
src/servers/app/proto6/BeDecorator.h | 46 +
src/servers/app/proto6/ColorUtils.cc | 101 +
src/servers/app/proto6/ColorUtils.h | 20 +
src/servers/app/proto6/DebugTools.cpp | 222 +
src/servers/app/proto6/DebugTools.h | 13 +
src/servers/app/proto6/Decorator.cpp | 153 +
src/servers/app/proto6/Decorator.h | 107 +
src/servers/app/proto6/Desktop.cpp | 413 +
src/servers/app/proto6/Desktop.h | 47 +
src/servers/app/proto6/DisplayDriver.cpp | 327 +
src/servers/app/proto6/DisplayDriver.h | 156 +
src/servers/app/proto6/Globals.h | 7 +
src/servers/app/proto6/Layer.cpp | 885 +
src/servers/app/proto6/Layer.h | 108 +
src/servers/app/proto6/PortLink.cpp | 438 +
src/servers/app/proto6/PortLink.h | 43 +
src/servers/app/proto6/ScreenDriver.cpp | 915 +
src/servers/app/proto6/ScreenDriver.h | 114 +
src/servers/app/proto6/SecondDriver.cpp | 836 +
src/servers/app/proto6/SecondDriver.h | 123 +
src/servers/app/proto6/SecondDriverHelper.h | 435 +
src/servers/app/proto6/ServerApp.cpp | 831 +
src/servers/app/proto6/ServerApp.h | 42 +
src/servers/app/proto6/ServerBitmap.cpp | 257 +
src/servers/app/proto6/ServerBitmap.h | 40 +
src/servers/app/proto6/ServerCursor.cpp | 136 +
src/servers/app/proto6/ServerCursor.h | 31 +
src/servers/app/proto6/ServerProtocol.h | 105 +
src/servers/app/proto6/ServerWindow.cpp | 507 +
src/servers/app/proto6/ServerWindow.h | 76 +
src/servers/app/proto6/SystemPalette.cpp | 327 +
src/servers/app/proto6/SystemPalette.h | 9 +
src/servers/app/proto6/ViewDriver.cpp | 1084 +
src/servers/app/proto6/ViewDriver.h | 140 +
src/servers/app/proto6/WinDecorator.cpp | 441 +
src/servers/app/proto6/WinDecorator.h | 45 +
src/servers/app/proto6/WindowBorder.cpp | 370 +
src/servers/app/proto6/WindowBorder.h | 39 +
src/servers/app/proto6/YMakDecorator.cpp | 660 +
src/servers/app/proto6/YMakDecorator.h | 47 +
.../app/proto6/driverharness/AppServer.cpp | 456 +
.../app/proto6/driverharness/AppServer.h | 50 +
.../app/proto6/driverharness/ColorUtils.cc | 46 +
.../app/proto6/driverharness/ColorUtils.h | 13 +
.../app/proto6/driverharness/DHApp.cpp | 23 +
src/servers/app/proto6/driverharness/DHApp.h | 16 +
.../proto6/driverharness/DHServerBitmap.cpp | 269 +
.../app/proto6/driverharness/DebugTools.cpp | 222 +
.../app/proto6/driverharness/DebugTools.h | 13 +
.../app/proto6/driverharness/Desktop.h | 46 +
.../app/proto6/driverharness/DirectDriver.cpp | 322 +
.../app/proto6/driverharness/DirectDriver.h | 117 +
.../proto6/driverharness/DisplayDriver.cpp | 327 +
.../app/proto6/driverharness/DisplayDriver.h | 156 +
.../app/proto6/driverharness/PortLink.cpp | 438 +
.../app/proto6/driverharness/PortLink.h | 43 +
.../app/proto6/driverharness/ScreenDriver.cpp | 915 +
.../app/proto6/driverharness/ScreenDriver.h | 114 +
.../app/proto6/driverharness/SecondDriver.cpp | 836 +
.../app/proto6/driverharness/SecondDriver.h | 123 +
.../proto6/driverharness/SecondDriverHelper.h | 435 +
.../app/proto6/driverharness/ServerBitmap.h | 40 +
.../app/proto6/driverharness/ServerCursor.cpp | 136 +
.../app/proto6/driverharness/ServerCursor.h | 31 +
.../app/proto6/driverharness/ServerProtocol.h | 95 +
.../proto6/driverharness/SystemPalette.cpp | 327 +
.../app/proto6/driverharness/SystemPalette.h | 9 +
.../app/proto6/driverharness/ViewDriver.cpp | 1080 +
.../app/proto6/driverharness/ViewDriver.h | 139 +
src/servers/app/proto6/router/router.cpp | 146 +
src/servers/app/proto6/router/router.h | 23 +
.../app/proto6/testobapp/DebugTools.cpp | 219 +
src/servers/app/proto6/testobapp/DebugTools.h | 12 +
.../app/proto6/testobapp/OBApplication.cpp | 382 +
.../app/proto6/testobapp/OBApplication.h | 71 +
.../app/proto6/testobapp/OBTestApp.cpp | 34 +
src/servers/app/proto6/testobapp/OBView.cpp | 872 +
src/servers/app/proto6/testobapp/OBView.h | 168 +
src/servers/app/proto6/testobapp/OBWindow.cpp | 523 +
src/servers/app/proto6/testobapp/OBWindow.h | 145 +
src/servers/app/proto6/testobapp/PortLink.cpp | 438 +
src/servers/app/proto6/testobapp/PortLink.h | 43 +
.../app/proto6/testobapp/ServerProtocol.h | 95 +
src/servers/input/InputServer.FileTypes.rsrc | Bin 0 -> 6415 bytes
src/servers/input/InputServer.cpp | 868 +
src/servers/input/InputServer.h | 137 +
src/servers/input/InputServerDevice.cpp | 201 +
.../input/InputServerDeviceListEntry.h | 27 +
src/servers/input/InputServerFilter.cpp | 106 +
src/servers/input/InputServerMethod.cpp | 134 +
src/servers/input/InputServerTypes.h | 25 +
src/servers/media/AppManager.cpp | 84 +
src/servers/media/AppManager.h | 24 +
src/servers/media/BufferManager.cpp | 149 +
src/servers/media/BufferManager.h | 43 +
src/servers/media/NodeManager.cpp | 119 +
src/servers/media/NodeManager.h | 48 +
src/servers/media/ServerInterface.h | 559 +
src/servers/media/debug.h | 40 +
src/servers/media/media_server.cpp | 652 +
src/servers/media_addon/main.cpp | 436 +
src/servers/print/BeUtils.cpp | 59 +
src/servers/print/BeUtils.h | 10 +
src/servers/print/PrintServer.FileTypes.rsrc | Bin 0 -> 4209 bytes
src/servers/print/PrintServerApp.R5.cpp | 149 +
.../print/PrintServerApp.Scripting.cpp | 201 +
src/servers/print/PrintServerApp.cpp | 538 +
src/servers/print/PrintServerApp.h | 88 +
src/servers/print/Printer.Scripting.cpp | 95 +
src/servers/print/Printer.cpp | 314 +
src/servers/print/Printer.h | 94 +
src/servers/screensaver/SSAwindow.cpp | 40 +
src/servers/screensaver/SSAwindow.h | 9 +
src/servers/screensaver/SSthread.cpp | 50 +
src/servers/screensaver/ScreenSaverApp.cpp | 263 +
src/servers/screensaver/ScreenSaverApp.h | 37 +
src/tests/Jamfile | 3 +
.../kernel/file_systems/befs/array/array.cpp | 66 +
.../file_systems/befs/array/smallArray.cpp | 33 +
.../kernel/file_systems/befs/btree/Inode.cpp | 53 +
.../kernel/file_systems/befs/btree/Inode.h | 52 +
.../kernel/file_systems/befs/btree/Journal.h | 42 +
.../kernel/file_systems/befs/btree/Volume.cpp | 18 +
.../kernel/file_systems/befs/btree/Volume.h | 36 +
.../kernel/file_systems/befs/btree/cache.cpp | 106 +
.../kernel/file_systems/befs/btree/cache.h | 22 +
.../kernel/file_systems/befs/btree/cpp.h | 5 +
.../kernel/file_systems/befs/btree/test.cpp | 720 +
.../kernel/file_systems/befs/queries/test.cpp | 163 +
.../befs/randomread/randomread.cpp | 204 +
.../kernel/file_systems/befs/rename/rename.c | 50 +
src/tests/add-ons/print/pdf/Bookmarks.zip | Bin 0 -> 5147 bytes
.../print/pdf/bezierbounds/Application.cpp | 108 +
.../print/pdf/bezierbounds/Application.h | 29 +
.../print/pdf/bezierbounds/Application.rsrc | Bin 0 -> 4193 bytes
.../print/pdf/bezierbounds/BezierBounds.cpp | 87 +
.../print/pdf/bezierbounds/BezierBounds.h | 40 +
.../print/pdf/bezierbounds/BezierBounds.txt | 12 +
.../print/pdf/bezierbounds/MsgConsts.h | 11 +
.../add-ons/print/pdf/bezierbounds/View.cpp | 91 +
.../add-ons/print/pdf/bezierbounds/View.h | 24 +
.../print/pdf/linepathbuilder/Application.cpp | 110 +
.../print/pdf/linepathbuilder/Application.h | 29 +
.../pdf/linepathbuilder/Application.rsrc | Bin 0 -> 4193 bytes
.../pdf/linepathbuilder/LinePathBuilder.txt | 14 +
.../print/pdf/linepathbuilder/MsgConsts.h | 11 +
.../print/pdf/linepathbuilder/View.cpp | 124 +
.../add-ons/print/pdf/linepathbuilder/View.h | 24 +
src/tests/kits/Jamfile | 4 +
src/tests/kits/app/Jamfile | 6 +
src/tests/kits/app/bhandler/AddFilterTest.cpp | 112 +
src/tests/kits/app/bhandler/AddFilterTest.h | 49 +
src/tests/kits/app/bhandler/BHandlerCases | 115 +
.../kits/app/bhandler/BHandlerTester.cpp | 332 +
src/tests/kits/app/bhandler/BHandlerTester.h | 65 +
src/tests/kits/app/bhandler/IsWatchedTest.cpp | 65 +
src/tests/kits/app/bhandler/IsWatchedTest.h | 49 +
src/tests/kits/app/bhandler/Jamfile | 21 +
.../kits/app/bhandler/LockLooperTest.cpp | 109 +
src/tests/kits/app/bhandler/LockLooperTest.h | 49 +
.../app/bhandler/LockLooperTestCommon.cpp | 44 +
.../kits/app/bhandler/LockLooperTestCommon.h | 60 +
.../bhandler/LockLooperWithTimeoutTest.cpp | 113 +
.../app/bhandler/LockLooperWithTimeoutTest.h | 49 +
src/tests/kits/app/bhandler/LooperTest.cpp | 63 +
src/tests/kits/app/bhandler/LooperTest.h | 50 +
.../kits/app/bhandler/NextHandlerTest.cpp | 62 +
src/tests/kits/app/bhandler/NextHandlerTest.h | 50 +
.../kits/app/bhandler/RemoveFilterTest.cpp | 161 +
.../kits/app/bhandler/RemoveFilterTest.h | 52 +
.../kits/app/bhandler/SetFilterListTest.cpp | 143 +
.../kits/app/bhandler/SetFilterListTest.h | 50 +
.../kits/app/bhandler/SetNextHandlerTest.cpp | 295 +
.../kits/app/bhandler/SetNextHandlerTest.h | 59 +
.../kits/app/bhandler/UnlockLooperTest.cpp | 91 +
.../kits/app/bhandler/UnlockLooperTest.h | 48 +
src/tests/kits/app/bhandler/main.cpp | 80 +
src/tests/kits/app/blooper/BLooperCases | 11 +
.../kits/app/blooper/IsMessageWaitingTest.cpp | 92 +
.../kits/app/blooper/IsMessageWaitingTest.h | 44 +
src/tests/kits/app/blooper/Jamfile | 13 +
.../kits/app/blooper/RemoveHandlerTest.cpp | 64 +
.../kits/app/blooper/RemoveHandlerTest.h | 40 +
src/tests/kits/app/blooper/main.cpp | 128 +
.../app/bmessagequeue/AddMessageTest1.cpp | 113 +
.../kits/app/bmessagequeue/AddMessageTest1.h | 34 +
.../app/bmessagequeue/AddMessageTest2.cpp | 110 +
.../kits/app/bmessagequeue/AddMessageTest2.h | 33 +
.../app/bmessagequeue/ConcurrencyTest1.cpp | 223 +
.../kits/app/bmessagequeue/ConcurrencyTest1.h | 43 +
.../app/bmessagequeue/ConcurrencyTest2.cpp | 274 +
.../kits/app/bmessagequeue/ConcurrencyTest2.h | 42 +
.../app/bmessagequeue/FindMessageTest1.cpp | 114 +
.../kits/app/bmessagequeue/FindMessageTest1.h | 33 +
src/tests/kits/app/bmessagequeue/Jamfile | 18 +
.../bmessagequeue/MessageQueueTestAddon.cpp | 49 +
.../bmessagequeue/MessageQueueTestCase.cpp | 106 +
.../app/bmessagequeue/MessageQueueTestCase.h | 79 +
src/tests/kits/app/bmessenger/BMessengerCases | 61 +
.../kits/app/bmessenger/BMessengerTester.cpp | 333 +
.../kits/app/bmessenger/BMessengerTester.h | 43 +
src/tests/kits/app/bmessenger/Helpers.h | 79 +
src/tests/kits/app/bmessenger/Jamfile | 11 +
.../kits/app/bmessenger/TargetTester.cpp | 46 +
src/tests/kits/app/bmessenger/TargetTester.h | 34 +
src/tests/kits/app/bmessenger/main.cpp | 52 +
src/tests/kits/app/common.h | 54 +
.../kits/interface/bprintjob/PrintTestApp.cpp | 155 +
.../kits/interface/bprintjob/PrintTestApp.hpp | 30 +
.../interface/bprintjob/PrintTestView.cpp | 18 +
.../interface/bprintjob/PrintTestView.hpp | 16 +
.../interface/bprintjob/PrintTestWindow.cpp | 59 +
.../interface/bprintjob/PrintTestWindow.hpp | 18 +
src/tests/kits/media/AreaTest.cpp | 49 +
src/tests/kits/media/BufferTest.cpp | 101 +
src/tests/kits/media/SizeofTest.cpp | 40 +
src/tests/kits/media/TimedEventQueueTest.cpp | 369 +
.../kits/media/nodetest/ConsumerNode.cpp | 301 +
src/tests/kits/media/nodetest/ConsumerNode.h | 72 +
.../kits/media/nodetest/ProducerNode.cpp | 461 +
src/tests/kits/media/nodetest/ProducerNode.h | 104 +
src/tests/kits/media/nodetest/main.cpp | 159 +
src/tests/kits/media/nodetest/misc.cpp | 37 +
src/tests/kits/media/nodetest/misc.h | 9 +
.../kits/midi/midi_player/Midi1To2Bridge.cpp | 130 +
.../kits/midi/midi_player/Midi1To2Bridge.h | 100 +
src/tests/kits/midi/midi_player/MidiDelay.cpp | 132 +
src/tests/kits/midi/midi_player/MidiDelay.h | 93 +
.../kits/midi/midi_player/MidiPlayer.cpp | 73 +
.../midi/midi_player_replacement/Activity.cpp | 81 +
.../midi/midi_player_replacement/Activity.h | 50 +
.../midi_player_replacement/MidiDelay.cpp | 132 +
.../midi/midi_player_replacement/MidiDelay.h | 93 +
.../midi_player_replacement/MidiMeter.cpp | 11 +
.../midi_player_replacement/MidiPlayer.rsrc | Bin 0 -> 2929 bytes
.../MidiPlayerView.cpp | 327 +
.../midi_player_replacement/MidiPlayerView.h | 104 +
.../MidiPlayerWindow.cpp | 648 +
.../MidiPlayerWindow.h | 75 +
.../midi/midi_player_replacement/Scope.cpp | 100 +
.../kits/midi/midi_player_replacement/Scope.h | 27 +
.../synth_file_reader/SynthFileFormat.txt | 36 +
.../synth_file_reader/SynthFileReader.cpp | 317 +
.../midi/synth_file_reader/SynthFileReader.h | 65 +
.../kits/midi/synth_file_reader/main.cpp | 55 +
src/tests/kits/midi/test1.cpp | 37 +
src/tests/kits/net/at_client.c | 61 +
src/tests/kits/net/at_srv.c | 60 +
src/tests/kits/net/select_test.c | 71 +
src/tests/kits/net/select_test2.c | 90 +
src/tests/kits/net/select_test_big.c | 107 +
src/tests/kits/net/stop_stack.c | 29 +
src/tests/kits/net/tcp_test.c | 73 +
src/tests/kits/net/test1.c | 69 +
src/tests/kits/net/test2.c | 77 +
src/tests/kits/net/test3.c | 89 +
src/tests/kits/net/ufunc.c | 36 +
src/tests/kits/net/ufunc.h | 9 +
src/tests/kits/storage/BasicTest.cpp | 127 +
src/tests/kits/storage/BasicTest.h | 143 +
src/tests/kits/storage/DirectoryTest.cpp | 1809 ++
src/tests/kits/storage/DirectoryTest.h | 43 +
src/tests/kits/storage/EntryTest.cpp | 2672 ++
src/tests/kits/storage/EntryTest.h | 109 +
src/tests/kits/storage/FileTest.cpp | 768 +
src/tests/kits/storage/FileTest.h | 49 +
src/tests/kits/storage/FindDirectoryTest.cpp | 435 +
src/tests/kits/storage/FindDirectoryTest.h | 33 +
src/tests/kits/storage/Jamfile | 71 +
src/tests/kits/storage/MimeTypeTest.cpp | 3761 +++
src/tests/kits/storage/MimeTypeTest.h | 74 +
src/tests/kits/storage/NodeTest.cpp | 1257 +
src/tests/kits/storage/NodeTest.h | 124 +
src/tests/kits/storage/PathTest.cpp | 1379 +
src/tests/kits/storage/PathTest.h | 38 +
src/tests/kits/storage/QueryTest.cpp | 1463 +
src/tests/kits/storage/QueryTest.h | 48 +
.../kits/storage/ResourceStringsTest.cpp | 706 +
src/tests/kits/storage/ResourceStringsTest.h | 47 +
src/tests/kits/storage/ResourcesTest.cpp | 1531 +
src/tests/kits/storage/ResourcesTest.h | 39 +
src/tests/kits/storage/StatableTest.cpp | 255 +
src/tests/kits/storage/StatableTest.h | 122 +
src/tests/kits/storage/SymLinkTest.cpp | 906 +
src/tests/kits/storage/SymLinkTest.h | 38 +
src/tests/kits/storage/Test.StorageKit.cpp | 127 +
src/tests/kits/storage/Test.StorageKit.h | 61 +
src/tests/kits/storage/TestApp.cpp | 89 +
src/tests/kits/storage/TestApp.h | 42 +
src/tests/kits/storage/TestUtils.cpp | 199 +
src/tests/kits/storage/TestUtils.h | 26 +
src/tests/kits/storage/resources/elf | Bin 0 -> 6310 bytes
src/tests/kits/storage/resources/elf-no-res | Bin 0 -> 6135 bytes
src/tests/kits/storage/resources/pef | Bin 0 -> 3609 bytes
src/tests/kits/storage/resources/pef-no-res | Bin 0 -> 1450 bytes
src/tests/kits/storage/resources/ppc.rsrc | Bin 0 -> 2199 bytes
src/tests/kits/storage/resources/x86.rsrc | Bin 0 -> 2163 bytes
.../support/barchivable/BArchivableTester.cpp | 128 +
.../support/barchivable/BArchivableTester.h | 45 +
.../FindInstantiationFuncTester.cpp | 397 +
.../barchivable/FindInstantiationFuncTester.h | 61 +
.../barchivable/InstantiateObjectTester.cpp | 552 +
.../barchivable/InstantiateObjectTester.h | 62 +
.../kits/support/barchivable/LocalCommon.h | 43 +
.../support/barchivable/LocalTestObject.cpp | 56 +
.../support/barchivable/LocalTestObject.h | 50 +
.../ValidateInstantiationTester.cpp | 158 +
.../barchivable/ValidateInstantiationTester.h | 48 +
src/tests/kits/support/barchivable/main.cpp | 61 +
.../remoteobjectdef/RemoteTestObject.cpp | 57 +
.../remoteobjectdef/RemoteTestObject.h | 51 +
.../barchivable/remoteobjectdef/Resource.rsrc | Bin 0 -> 2820 bytes
.../support/bautolock/AutolockLockerTest.cpp | 144 +
.../support/bautolock/AutolockLockerTest.h | 34 +
.../support/bautolock/AutolockLooperTest.cpp | 90 +
.../support/bautolock/AutolockLooperTest.h | 32 +
.../support/bautolock/AutolockTestAddon.cpp | 42 +
.../blocker/BenaphoreLockCountTest1.cpp | 186 +
.../support/blocker/BenaphoreLockCountTest1.h | 41 +
.../kits/support/blocker/ConcurrencyTest1.cpp | 182 +
.../kits/support/blocker/ConcurrencyTest1.h | 36 +
.../kits/support/blocker/ConcurrencyTest2.cpp | 225 +
.../kits/support/blocker/ConcurrencyTest2.h | 38 +
.../support/blocker/ConstructionTest1.cpp | 146 +
.../kits/support/blocker/ConstructionTest1.h | 36 +
.../kits/support/blocker/DestructionTest1.cpp | 130 +
.../kits/support/blocker/DestructionTest1.h | 34 +
.../kits/support/blocker/DestructionTest2.cpp | 135 +
.../kits/support/blocker/DestructionTest2.h | 34 +
.../kits/support/blocker/LockerTestAddon.cpp | 55 +
.../kits/support/blocker/LockerTestCase.cpp | 75 +
.../kits/support/blocker/LockerTestCase.h | 60 +
.../blocker/SemaphoreLockCountTest1.cpp | 186 +
.../support/blocker/SemaphoreLockCountTest1.h | 41 +
.../kits/translation/BitmapStreamTest.cpp | 231 +
src/tests/kits/translation/BitmapStreamTest.h | 69 +
.../kits/translation/TranslatorRosterTest.cpp | 624 +
.../kits/translation/TranslatorRosterTest.h | 72 +
src/tests/kits/translation/data/garbled_data | Bin 0 -> 32 bytes
.../kits/translation/data/images/image.gif | Bin 0 -> 2050 bytes
.../kits/translation/data/images/image.jpg | Bin 0 -> 2452 bytes
.../kits/translation/data/images/image.png | Bin 0 -> 245 bytes
.../multitest/MainControlWindow.cpp | 58 +
.../translation/multitest/MainControlWindow.h | 24 +
.../kits/translation/multitest/MultiTest.cpp | 36 +
.../kits/translation/multitest/MultiTest.h | 20 +
.../kits/translation/multitest/WorkView.cpp | 61 +
.../kits/translation/multitest/WorkView.h | 20 +
.../kits/translation/multitest/WorkWindow.cpp | 29 +
.../kits/translation/multitest/WorkWindow.h | 15 +
src/tests/servers/input/msgspy/MsgSpy.cpp | 519 +
src/tests/servers/input/msgspy/clean | 1 +
src/tests/servers/input/msgspy/start | 2 +
src/tests/servers/input/msgspy/stop | 2 +
src/tests/servers/input/portspy/PortSpy.cpp | 26 +
src/tools/Jamfile | 2 +
src/tools/cppunit/CppUnitShell.cpp | 213 +
src/tools/cppunit/Jamfile | 49 +
src/tools/cppunit/TestCase.cpp | 35 +
src/tools/cppunit/TestResult.cpp | 8 +
src/tools/cppunit/TestShell.cpp | 36 +
src/tools/cppunit/TestSuite.cpp | 8 +
src/tools/cppunit/cppunit/Asserter.cpp | 57 +
.../cppunit/cppunit/CompilerOutputter.cpp | 202 +
src/tools/cppunit/cppunit/Exception.cpp | 135 +
.../cppunit/cppunit/NotEqualException.cpp | 111 +
src/tools/cppunit/cppunit/RepeatedTest.cpp | 37 +
src/tools/cppunit/cppunit/SourceLine.cpp | 62 +
.../cppunit/cppunit/SynchronizedObject.cpp | 35 +
src/tools/cppunit/cppunit/TestAssert.cpp | 74 +
src/tools/cppunit/cppunit/TestCase.cpp | 135 +
.../cppunit/cppunit/TestFactoryRegistry.cpp | 176 +
src/tools/cppunit/cppunit/TestFailure.cpp | 77 +
src/tools/cppunit/cppunit/TestResult.cpp | 129 +
.../cppunit/cppunit/TestResultCollector.cpp | 110 +
src/tools/cppunit/cppunit/TestRunner.cpp | 179 +
src/tools/cppunit/cppunit/TestSetUp.cpp | 31 +
.../cppunit/cppunit/TestSucessListener.cpp | 46 +
src/tools/cppunit/cppunit/TestSuite.cpp | 96 +
src/tools/cppunit/cppunit/TextOutputter.cpp | 156 +
.../cppunit/TextTestProgressListener.cpp | 44 +
src/tools/cppunit/cppunit/TextTestResult.cpp | 177 +
src/tools/cppunit/cppunit/TypeInfoHelper.cpp | 30 +
src/tools/cppunit/cppunit/XmlOutputter.cpp | 315 +
src/tools/hey/Jamfile | 0
src/tools/hey/hey.c | 1339 +
src/tools/hey/hey.h | 24 +
src/tools/hey/readme.html | 260 +
src/tools/jam/Jamfile | 0
src/tools/restest/Elf.h | 105 +
src/tools/restest/Exception.h | 107 +
src/tools/restest/OffsetFile.cpp | 155 +
src/tools/restest/OffsetFile.h | 37 +
src/tools/restest/Pef.h | 48 +
src/tools/restest/ResourceFile.cpp | 1160 +
src/tools/restest/ResourceFile.h | 105 +
src/tools/restest/ResourceItem.cpp | 205 +
src/tools/restest/ResourceItem.h | 59 +
src/tools/restest/ResourcesDefs.h | 105 +
src/tools/restest/Warnings.cpp | 106 +
src/tools/restest/Warnings.h | 35 +
src/tools/restest/restest.cpp | 351 +
src/tools/stubgen/COPYING | 340 +
.../stubgen/Example Usage for OpenBeOS.txt | 3 +
src/tools/stubgen/README | 147 +
src/tools/stubgen/etc/Debug.C | 58 +
src/tools/stubgen/etc/Debug.H | 51 +
src/tools/stubgen/getopt.c | 826 +
src/tools/stubgen/getopt.h | 130 +
src/tools/stubgen/lexer.l | 525 +
src/tools/stubgen/main.c | 683 +
src/tools/stubgen/parser.y | 1787 ++
src/tools/stubgen/pathname.c | 86 +
src/tools/stubgen/pathname.h | 70 +
src/tools/stubgen/table.c | 441 +
src/tools/stubgen/table.h | 119 +
src/tools/stubgen/test/MJRString.H | 60 +
src/tools/stubgen/test/Point.h | 12 +
src/tools/stubgen/test/Rational.H | 82 +
src/tools/stubgen/test/blank.h | 0
src/tools/stubgen/test/defines.h | 14 +
src/tools/stubgen/test/heap.H | 139 +
src/tools/stubgen/test/pathname_tst.c | 46 +
src/tools/stubgen/test/sample.h | 117 +
src/tools/stubgen/util.c | 147 +
src/tools/stubgen/util.h | 63 +
2025 files changed, 472889 insertions(+)
create mode 100644 Jamfile
create mode 100644 Jamrules
create mode 100644 ReadMe
create mode 100755 configure
create mode 100644 docs/develop/app/usecases/BMessageQueueUseCases.html
create mode 100644 docs/develop/app/usecases/PortLinkUseCases.htm
create mode 100644 docs/develop/befs/resources.html
create mode 100644 docs/develop/drivesetup/DesDoc.txt
create mode 100644 docs/develop/drivesetup/todo.txt
create mode 100644 docs/develop/fontprefs/readme
create mode 100644 docs/develop/fontprefs/readme.xml
create mode 100644 docs/develop/ikteam/BinCompat.html
create mode 100644 docs/develop/ikteam/IK_Process.html
create mode 100644 docs/develop/ikteam/UnitTestingInfo.html
create mode 100644 docs/develop/ikteam/images/Check.gif
create mode 100644 docs/develop/ikteam/images/DocumentDraw.gif
create mode 100644 docs/develop/ikteam/images/GoalFlag.gif
create mode 100644 docs/develop/ikteam/images/Hammer.gif
create mode 100644 docs/develop/ikteam/images/Help.gif
create mode 100644 docs/develop/ikteam/images/User.gif
create mode 100644 docs/develop/ikteam/images/blank-20.gif
create mode 100644 docs/develop/ikteam/index.html
create mode 100644 docs/develop/ikteam/schedule/Discussion.html
create mode 100644 docs/develop/ikteam/schedule/Tasks.xml
create mode 100644 docs/develop/ikteam/schedule/applicationkit/ApplicationKitMilestones.html
create mode 100644 docs/develop/ikteam/schedule/applicationkit/BCursor.html
create mode 100644 docs/develop/ikteam/schedule/applicationkit/BHandler.html
create mode 100644 docs/develop/ikteam/schedule/applicationkit/BLooper.html
create mode 100644 docs/develop/ikteam/schedule/applicationkit/Clipboard.html
create mode 100644 docs/develop/ikteam/schedule/applicationkit/Messaging.html
create mode 100644 docs/develop/ikteam/schedule/applicationkit/Roster.html
create mode 100644 docs/develop/ikteam/schedule/applicationkit/ScriptingSupport.html
create mode 100644 docs/develop/ikteam/schedule/assignments.html
create mode 100644 docs/develop/ikteam/schedule/index.html
create mode 100644 docs/develop/ikteam/schedule/integration/BApplication.html
create mode 100644 docs/develop/ikteam/schedule/integration/BArchivable.html
create mode 100644 docs/develop/ikteam/schedule/integration/BView.html
create mode 100644 docs/develop/ikteam/schedule/integration/BWindow.html
create mode 100644 docs/develop/ikteam/schedule/integration/IntegrationMilestones.html
create mode 100644 docs/develop/ikteam/schedule/interfacekit/AdvancedControlWidgets.html
create mode 100644 docs/develop/ikteam/schedule/interfacekit/ControlWidgets.html
create mode 100644 docs/develop/ikteam/schedule/interfacekit/Group1Support.html
create mode 100644 docs/develop/ikteam/schedule/interfacekit/Group2Support.html
create mode 100644 docs/develop/ikteam/schedule/interfacekit/Group3Support.html
create mode 100644 docs/develop/ikteam/schedule/interfacekit/InterfaceKitMilestones.html
create mode 100644 docs/develop/ikteam/schedule/interfacekit/ListViewSupport.html
create mode 100644 docs/develop/ikteam/schedule/interfacekit/MenuingSupport.html
create mode 100644 docs/develop/ikteam/schedule/interfacekit/Miscellaneous.html
create mode 100644 docs/develop/ikteam/schedule/interfacekit/Non-ControlWidgets.html
create mode 100644 docs/develop/ikteam/schedule/interfacekit/ReplicantSupport.html
create mode 100644 docs/develop/ikteam/schedule/interfacekit/ScrollingSupport.html
create mode 100644 docs/develop/ikteam/schedule/interfacekit/TextViewSupport.html
create mode 100644 docs/develop/ikteam/schedule/supportkit/BStopWatch.html
create mode 100644 docs/develop/ikteam/schedule/supportkit/IO.html
create mode 100644 docs/develop/ikteam/schedule/supportkit/SupportKitMilestones.html
create mode 100644 docs/develop/ikteam/schedule/supportkit/Synchronization.html
create mode 100644 docs/develop/ikteam/schedule/supportkit/Utilities.html
create mode 100644 docs/develop/ikteam/schedule/templates/assignments.html
create mode 100644 docs/develop/ikteam/schedule/templates/group.html
create mode 100644 docs/develop/ikteam/schedule/templates/index.html
create mode 100644 docs/develop/ikteam/schedule/templates/milestone.html
create mode 100644 docs/develop/ikteam/schedule/templates/tasks.html
create mode 100644 docs/develop/input/BInputServerDevice
create mode 100644 docs/develop/input/BInputServerFilter
create mode 100644 docs/develop/input/BInputServerMethod
create mode 100644 docs/develop/input/Function Specs
create mode 100644 docs/develop/input/Headers
create mode 100644 docs/develop/input/InputServer_functions.txt
create mode 100644 docs/develop/input/input_server threads
create mode 100644 docs/develop/input/intro to input_server
create mode 100644 docs/develop/input/is_manager.fil
create mode 100644 docs/develop/input/is_server.fil
create mode 100644 docs/develop/input/is_server2.fil
create mode 100644 docs/develop/input/miscellaneous
create mode 100644 docs/develop/input/objdump-inputserver
create mode 100644 docs/develop/kernel/arch_vm_translation_map_x86
create mode 100644 docs/develop/kernel/arch_vm_x86
create mode 100644 docs/develop/kernel/vm
create mode 100644 docs/develop/kernel/vm_cache
create mode 100644 docs/develop/kernel/vm_daemon
create mode 100644 docs/develop/kernel/vm_page
create mode 100644 docs/develop/kernel/vm_store_anonumous_noswap
create mode 100644 docs/develop/kernel/vm_store_device
create mode 100644 docs/develop/kernel/vm_store_null
create mode 100644 docs/develop/kernel/vm_store_vnode
create mode 100644 docs/develop/keymap/About.txt
create mode 100644 docs/develop/midi/Milestones
create mode 100644 docs/develop/midi/ToDo
create mode 100644 docs/develop/net/00-Design_general
create mode 100644 docs/develop/net/10-NetworkDrivers
create mode 100644 docs/develop/net/30-NetCache
create mode 100644 docs/develop/net/Milestones
create mode 100644 docs/develop/net/naming
create mode 100644 docs/develop/print/AddPrinter Message.txt
create mode 100644 docs/develop/print/Input Driver.txt
create mode 100644 docs/develop/print/MessagesFromPageSetup.txt
create mode 100644 docs/develop/print/PrintSession Messages.txt
create mode 100644 docs/develop/print/Printers Def Window Frame.txt
create mode 100644 docs/develop/print/Printing Architecture.txt
create mode 100644 docs/develop/print/StyleEdit_PageSetup_JobSetup.txt
create mode 100644 docs/develop/print/libbe.so.printing.txt
create mode 100644 docs/develop/storage/Annotations
create mode 100644 docs/develop/storage/Completed
create mode 100644 docs/develop/storage/RegistrarNotes.html
create mode 100644 docs/develop/storage/ToDo
create mode 100644 docs/develop/storage/doxygen_config
create mode 100644 docs/develop/storage/resources/ResourcesFormat.tex
create mode 100644 docs/develop/support/usecases/BAutolockUseCases.html
create mode 100644 docs/develop/support/usecases/BLockerUseCases.html
create mode 100644 docs/develop/virtualmemory/README.XML
create mode 100644 docs/develop/virtualmemory/readme
create mode 100644 headers/os/BeBuild.h
create mode 100644 headers/os/add-ons/file_system/fsproto.h
create mode 100644 headers/os/add-ons/input_server/InputServerDevice.h
create mode 100644 headers/os/add-ons/input_server/InputServerFilter.h
create mode 100644 headers/os/add-ons/input_server/InputServerMethod.h
create mode 100644 headers/os/app/AppDefs.h
create mode 100644 headers/os/app/Application.h
create mode 100644 headers/os/app/Clipboard.h
create mode 100644 headers/os/app/Cursor.h
create mode 100644 headers/os/app/Handler.h
create mode 100644 headers/os/app/Invoker.h
create mode 100644 headers/os/app/Looper.h
create mode 100644 headers/os/app/MessageFilter.h
create mode 100644 headers/os/app/MessageQueue.h
create mode 100644 headers/os/app/MessageRunner.h
create mode 100644 headers/os/app/Messenger.h
create mode 100644 headers/os/app/PropertyInfo.h
create mode 100644 headers/os/app/Roster.h
create mode 100644 headers/os/game/DirectWindow.h
create mode 100644 headers/os/game/FileGameSound.h
create mode 100644 headers/os/game/GameKit.h
create mode 100644 headers/os/game/GameSound.h
create mode 100644 headers/os/game/GameSoundDefs.h
create mode 100644 headers/os/game/PushGameSound.h
create mode 100644 headers/os/game/SimpleGameSound.h
create mode 100644 headers/os/game/StreamingGameSound.h
create mode 100644 headers/os/game/WindowScreen.h
create mode 100644 headers/os/interface/Alert.h
create mode 100644 headers/os/interface/Box.h
create mode 100644 headers/os/interface/Button.h
create mode 100644 headers/os/interface/CheckBox.h
create mode 100644 headers/os/interface/Control.h
create mode 100644 headers/os/interface/GraphicsDefs.h
create mode 100644 headers/os/interface/Input.h
create mode 100644 headers/os/interface/InterfaceDefs.h
create mode 100644 headers/os/interface/ListItem.h
create mode 100644 headers/os/interface/ListView.h
create mode 100644 headers/os/interface/Point.h
create mode 100644 headers/os/interface/PrintJob.h
create mode 100644 headers/os/interface/RadioButton.h
create mode 100644 headers/os/interface/Rect.h
create mode 100644 headers/os/interface/StatusBar.h
create mode 100644 headers/os/interface/StringItem.h
create mode 100644 headers/os/interface/StringView.h
create mode 100644 headers/os/interface/TextControl.h
create mode 100644 headers/os/interface/UnicodeBlockObjects.h
create mode 100644 headers/os/interface/View.h
create mode 100644 headers/os/interface/Window.h
create mode 100644 headers/os/kernel/OS.h
create mode 100644 headers/os/kernel/dirent.h
create mode 100644 headers/os/kernel/fcntl.h
create mode 100644 headers/os/kernel/sys/domain.h
create mode 100644 headers/os/kernel/sys/filio.h
create mode 100644 headers/os/kernel/sys/ioccom.h
create mode 100644 headers/os/kernel/sys/ioctl.h
create mode 100644 headers/os/kernel/sys/protosw.h
create mode 100644 headers/os/kernel/sys/socket.h
create mode 100644 headers/os/kernel/sys/socketvar.h
create mode 100644 headers/os/kernel/sys/stat.h
create mode 100644 headers/os/kernel/sys/uio.h
create mode 100755 headers/os/kernel/syscalls.h
create mode 100644 headers/os/kernel/thread_types.h
create mode 100644 headers/os/kernel/vfs_types.h
create mode 100755 headers/os/kernel/vm_types.h
create mode 100644 headers/os/media/Buffer.h
create mode 100644 headers/os/media/BufferConsumer.h
create mode 100644 headers/os/media/BufferGroup.h
create mode 100644 headers/os/media/BufferProducer.h
create mode 100644 headers/os/media/Controllable.h
create mode 100644 headers/os/media/FileInterface.h
create mode 100644 headers/os/media/MediaAddOn.h
create mode 100644 headers/os/media/MediaDecoder.h
create mode 100644 headers/os/media/MediaDefs.h
create mode 100644 headers/os/media/MediaEncoder.h
create mode 100644 headers/os/media/MediaEventLooper.h
create mode 100644 headers/os/media/MediaFile.h
create mode 100644 headers/os/media/MediaFiles.h
create mode 100644 headers/os/media/MediaFormats.h
create mode 100644 headers/os/media/MediaNode.h
create mode 100644 headers/os/media/MediaRoster.h
create mode 100644 headers/os/media/MediaTheme.h
create mode 100644 headers/os/media/MediaTrack.h
create mode 100644 headers/os/media/ParameterWeb.h
create mode 100644 headers/os/media/PlaySound.h
create mode 100644 headers/os/media/RealtimeAlloc.h
create mode 100644 headers/os/media/Sound.h
create mode 100644 headers/os/media/SoundFile.h
create mode 100644 headers/os/media/SoundPlayer.h
create mode 100644 headers/os/media/TimeCode.h
create mode 100644 headers/os/media/TimeSource.h
create mode 100644 headers/os/media/TimedEventQueue.h
create mode 100644 headers/os/midi/Midi.h
create mode 100644 headers/os/midi/MidiDefs.h
create mode 100644 headers/os/midi/MidiStore.h
create mode 100644 headers/os/midi/MidiText.h
create mode 100644 headers/os/storage/Directory.h
create mode 100644 headers/os/storage/Entry.h
create mode 100644 headers/os/storage/EntryList.h
create mode 100644 headers/os/storage/File.h
create mode 100644 headers/os/storage/FindDirectory.h
create mode 100644 headers/os/storage/Mime.h
create mode 100644 headers/os/storage/MimeType.h
create mode 100644 headers/os/storage/Node.h
create mode 100644 headers/os/storage/NodeInfo.h
create mode 100644 headers/os/storage/Path.h
create mode 100644 headers/os/storage/Query.h
create mode 100644 headers/os/storage/ResourceStrings.h
create mode 100644 headers/os/storage/Resources.h
create mode 100644 headers/os/storage/Statable.h
create mode 100644 headers/os/storage/StorageDefs.h
create mode 100644 headers/os/storage/SymLink.h
create mode 100644 headers/os/storage/Volume.h
create mode 100644 headers/os/support/Archivable.h
create mode 100644 headers/os/support/Autolock.h
create mode 100644 headers/os/support/ByteOrder.h
create mode 100644 headers/os/support/ClassInfo.h
create mode 100644 headers/os/support/DataIO.h
create mode 100644 headers/os/support/Errors.h
create mode 100644 headers/os/support/Flattenable.h
create mode 100644 headers/os/support/List.h
create mode 100644 headers/os/support/Locker.h
create mode 100644 headers/os/support/MallocIO.h
create mode 100644 headers/os/support/StopWatch.h
create mode 100644 headers/os/support/String.h
create mode 100644 headers/os/support/SupportDefs.h
create mode 100644 headers/os/support/TypeConstants.h
create mode 100644 headers/os/support/byteorder.h
create mode 100644 headers/os/translation/BitmapStream.h
create mode 100644 headers/os/translation/R4xTranslator.h
create mode 100644 headers/os/translation/TranslationDefs.h
create mode 100644 headers/os/translation/TranslationErrors.h
create mode 100644 headers/os/translation/TranslationKit.h
create mode 100644 headers/os/translation/TranslationUtils.h
create mode 100644 headers/os/translation/Translator.h
create mode 100644 headers/os/translation/TranslatorAddOn.h
create mode 100644 headers/os/translation/TranslatorFormats.h
create mode 100644 headers/os/translation/TranslatorRoster.h
create mode 100644 headers/posix/arpa/inet.h
create mode 100644 headers/posix/arpa/nameser.h
create mode 100644 headers/posix/core_funcs.h
create mode 100644 headers/posix/core_module.h
create mode 100644 headers/posix/lock.h
create mode 100644 headers/posix/net/if.h
create mode 100644 headers/posix/net/if_arp.h
create mode 100644 headers/posix/net/if_dl.h
create mode 100644 headers/posix/net/if_ppp.h
create mode 100644 headers/posix/net/if_types.h
create mode 100644 headers/posix/net/ppp_ctrl.h
create mode 100644 headers/posix/net/ppp_defs.h
create mode 100644 headers/posix/net/ppp_stats.h
create mode 100644 headers/posix/net/radix.h
create mode 100644 headers/posix/net/raw_cb.h
create mode 100644 headers/posix/net/route.h
create mode 100644 headers/posix/net_malloc.h
create mode 100644 headers/posix/net_misc.h
create mode 100644 headers/posix/net_module.h
create mode 100644 headers/posix/net_timer.h
create mode 100644 headers/posix/netdb.h
create mode 100644 headers/posix/netinet/icmp_var.h
create mode 100644 headers/posix/netinet/if_ether.h
create mode 100644 headers/posix/netinet/in.h
create mode 100644 headers/posix/netinet/in_pcb.h
create mode 100644 headers/posix/netinet/in_systm.h
create mode 100644 headers/posix/netinet/in_var.h
create mode 100644 headers/posix/netinet/ip.h
create mode 100644 headers/posix/netinet/ip_icmp.h
create mode 100644 headers/posix/netinet/ip_var.h
create mode 100644 headers/posix/netinet/tcp.h
create mode 100644 headers/posix/netinet/tcp_debug.h
create mode 100644 headers/posix/netinet/tcp_fsm.h
create mode 100644 headers/posix/netinet/tcp_seq.h
create mode 100644 headers/posix/netinet/tcp_timer.h
create mode 100644 headers/posix/netinet/tcp_var.h
create mode 100644 headers/posix/netinet/tcpip.h
create mode 100644 headers/posix/netinet/udp.h
create mode 100644 headers/posix/netinet/udp_var.h
create mode 100644 headers/posix/nhash.h
create mode 100644 headers/posix/poll.h
create mode 100644 headers/posix/pools.h
create mode 100644 headers/posix/protocols.h
create mode 100644 headers/posix/resolv.h
create mode 100644 headers/posix/sys/domain.h
create mode 100644 headers/posix/sys/mbuf.h
create mode 100644 headers/posix/sys/net_uio.h
create mode 100644 headers/posix/sys/protosw.h
create mode 100644 headers/posix/sys/select.h
create mode 100644 headers/posix/sys/socket.h
create mode 100644 headers/posix/sys/socketvar.h
create mode 100644 headers/posix/sys/sockio.h
create mode 100644 headers/posix/userland_ipc.h
create mode 100644 headers/private/app/PortLink.h
create mode 100644 headers/private/app/TokenSpace.h
create mode 100644 headers/private/input/kb_mouse_driver.h
create mode 100644 headers/private/interface/TextInput.h
create mode 100644 headers/private/interface/pr_server.h
create mode 100644 headers/private/kernel/Errors.h
create mode 100644 headers/private/kernel/arch/alpha/cpu.h
create mode 100644 headers/private/kernel/arch/alpha/kernel.h
create mode 100644 headers/private/kernel/arch/alpha/ktypes.h
create mode 100644 headers/private/kernel/arch/alpha/stage2.h
create mode 100644 headers/private/kernel/arch/alpha/thread_struct.h
create mode 100644 headers/private/kernel/arch/alpha/va-alpha.h
create mode 100644 headers/private/kernel/arch/cpu.h
create mode 100644 headers/private/kernel/arch/dbg_console.h
create mode 100644 headers/private/kernel/arch/debug.h
create mode 100644 headers/private/kernel/arch/faults.h
create mode 100644 headers/private/kernel/arch/int.h
create mode 100644 headers/private/kernel/arch/ppc/cpu.h
create mode 100644 headers/private/kernel/arch/ppc/kernel.h
create mode 100644 headers/private/kernel/arch/ppc/ktypes.h
create mode 100644 headers/private/kernel/arch/ppc/stage2.h
create mode 100644 headers/private/kernel/arch/ppc/stage2_priv.h
create mode 100644 headers/private/kernel/arch/ppc/thread_struct.h
create mode 100644 headers/private/kernel/arch/ppc/types.h
create mode 100644 headers/private/kernel/arch/sh4/cpu.h
create mode 100755 headers/private/kernel/arch/sh4/defs.h
create mode 100644 headers/private/kernel/arch/sh4/kernel.h
create mode 100644 headers/private/kernel/arch/sh4/ktypes.h
create mode 100644 headers/private/kernel/arch/sh4/mmu.h
create mode 100755 headers/private/kernel/arch/sh4/rtl8139_priv.h
create mode 100755 headers/private/kernel/arch/sh4/rtl8139c.h
create mode 100644 headers/private/kernel/arch/sh4/serial.h
create mode 100644 headers/private/kernel/arch/sh4/sh4.h
create mode 100644 headers/private/kernel/arch/sh4/stage2.h
create mode 100644 headers/private/kernel/arch/sh4/thread_struct.h
create mode 100644 headers/private/kernel/arch/sh4/types.h
create mode 100644 headers/private/kernel/arch/sh4/va-sh.h
create mode 100644 headers/private/kernel/arch/sh4/vcpu.h
create mode 100644 headers/private/kernel/arch/sh4/vcpu_struct.h
create mode 100644 headers/private/kernel/arch/smp.h
create mode 100644 headers/private/kernel/arch/sparc/DEFS.h
create mode 100644 headers/private/kernel/arch/sparc/cpu.h
create mode 100644 headers/private/kernel/arch/sparc/kernel.h
create mode 100644 headers/private/kernel/arch/sparc/ktypes.h
create mode 100644 headers/private/kernel/arch/sparc/promdev.h
create mode 100644 headers/private/kernel/arch/sparc/saerrno.h
create mode 100644 headers/private/kernel/arch/sparc/saioctl.h
create mode 100755 headers/private/kernel/arch/sparc/sparc.h
create mode 100644 headers/private/kernel/arch/sparc/sparcbootblock.h
create mode 100644 headers/private/kernel/arch/sparc/stage2.h
create mode 100644 headers/private/kernel/arch/sparc/stand.h
create mode 100644 headers/private/kernel/arch/sparc/thread_struct.h
create mode 100644 headers/private/kernel/arch/sparc/types.h
create mode 100644 headers/private/kernel/arch/sparc/va-sparc.h
create mode 100644 headers/private/kernel/arch/thread.h
create mode 100644 headers/private/kernel/arch/thread_struct.h
create mode 100644 headers/private/kernel/arch/timer.h
create mode 100644 headers/private/kernel/arch/vm.h
create mode 100644 headers/private/kernel/arch/vm_translation_map.h
create mode 100644 headers/private/kernel/arch/x86/arch_cpu.h
create mode 100644 headers/private/kernel/arch/x86/arch_kernel.h
create mode 100644 headers/private/kernel/arch/x86/arch_stage2.h
create mode 100644 headers/private/kernel/arch/x86/arch_thread.h
create mode 100755 headers/private/kernel/arch/x86/console_dev.h
create mode 100755 headers/private/kernel/arch/x86/faults.h
create mode 100755 headers/private/kernel/arch/x86/ide_bus.h
create mode 100755 headers/private/kernel/arch/x86/ide_private.h
create mode 100755 headers/private/kernel/arch/x86/ide_raw.h
create mode 100755 headers/private/kernel/arch/x86/interrupts.h
create mode 100755 headers/private/kernel/arch/x86/keyboard.h
create mode 100755 headers/private/kernel/arch/x86/partition.h
create mode 100755 headers/private/kernel/arch/x86/ps2mouse.h
create mode 100755 headers/private/kernel/arch/x86/rtl8139_dev.h
create mode 100755 headers/private/kernel/arch/x86/rtl8139_priv.h
create mode 100755 headers/private/kernel/arch/x86/smp_priv.h
create mode 100755 headers/private/kernel/arch/x86/stage2_priv.h
create mode 100755 headers/private/kernel/arch/x86/thread_struct.h
create mode 100755 headers/private/kernel/arch/x86/timer.h
create mode 100755 headers/private/kernel/arch/x86/types.h
create mode 100755 headers/private/kernel/arch/x86/vesa.h
create mode 100755 headers/private/kernel/arch/x86/vm.h
create mode 100755 headers/private/kernel/assert.h
create mode 100755 headers/private/kernel/atomic.h
create mode 100755 headers/private/kernel/beos.h
create mode 100755 headers/private/kernel/beos_p.h
create mode 100755 headers/private/kernel/bootdir.h
create mode 100755 headers/private/kernel/bootfs.h
create mode 100755 headers/private/kernel/bus.h
create mode 100755 headers/private/kernel/cbuf.h
create mode 100755 headers/private/kernel/cdefs.h
create mode 100755 headers/private/kernel/console.h
create mode 100644 headers/private/kernel/cpu.h
create mode 100755 headers/private/kernel/ctlreg.h
create mode 100755 headers/private/kernel/ctype.h
create mode 100755 headers/private/kernel/dbg_console.h
create mode 100755 headers/private/kernel/debug.h
create mode 100755 headers/private/kernel/defines.h
create mode 100755 headers/private/kernel/dev.h
create mode 100755 headers/private/kernel/devfs.h
create mode 100755 headers/private/kernel/devs.h
create mode 100755 headers/private/kernel/dlfcn.h
create mode 100755 headers/private/kernel/drivers.h
create mode 100755 headers/private/kernel/elf.h
create mode 100755 headers/private/kernel/elf32.h
create mode 100755 headers/private/kernel/errno.h
create mode 100755 headers/private/kernel/faults_priv.h
create mode 100755 headers/private/kernel/fb_console.h
create mode 100644 headers/private/kernel/fd.h
create mode 100755 headers/private/kernel/float.h
create mode 100755 headers/private/kernel/font.h
create mode 100755 headers/private/kernel/gdb.h
create mode 100755 headers/private/kernel/int.h
create mode 100755 headers/private/kernel/isa.h
create mode 100755 headers/private/kernel/isovol.h
create mode 100644 headers/private/kernel/kernel.h
create mode 100755 headers/private/kernel/khash.h
create mode 100644 headers/private/kernel/ksocket.h
create mode 100755 headers/private/kernel/ksyscalls.h
create mode 100755 headers/private/kernel/ktypes.h
create mode 100755 headers/private/kernel/lock.h
create mode 100755 headers/private/kernel/math.h
create mode 100755 headers/private/kernel/mathimpl.h
create mode 100644 headers/private/kernel/mbuf.h
create mode 100755 headers/private/kernel/memheap.h
create mode 100755 headers/private/kernel/module.h
create mode 100644 headers/private/kernel/nhash.h
create mode 100755 headers/private/kernel/null.h
create mode 100755 headers/private/kernel/pci_bus.h
create mode 100755 headers/private/kernel/pci_p.h
create mode 100644 headers/private/kernel/pools.h
create mode 100755 headers/private/kernel/port.h
create mode 100755 headers/private/kernel/queue.h
create mode 100755 headers/private/kernel/resource.h
create mode 100755 headers/private/kernel/rootfs.h
create mode 100755 headers/private/kernel/sem.h
create mode 100755 headers/private/kernel/smp.h
create mode 100755 headers/private/kernel/stage2.h
create mode 100755 headers/private/kernel/stage2_struct.h
create mode 100755 headers/private/kernel/stdarg.h
create mode 100755 headers/private/kernel/stdio.h
create mode 100755 headers/private/kernel/stdlib.h
create mode 100755 headers/private/kernel/string.h
create mode 100644 headers/private/kernel/sysctl.h
create mode 100755 headers/private/kernel/thread.h
create mode 100755 headers/private/kernel/timer.h
create mode 100755 headers/private/kernel/trig.h
create mode 100755 headers/private/kernel/unistd.h
create mode 100755 headers/private/kernel/user_runtime.h
create mode 100755 headers/private/kernel/vfs.h
create mode 100755 headers/private/kernel/vm.h
create mode 100755 headers/private/kernel/vm_cache.h
create mode 100755 headers/private/kernel/vm_page.h
create mode 100755 headers/private/kernel/vm_priv.h
create mode 100755 headers/private/kernel/vm_store_anonymous_noswap.h
create mode 100755 headers/private/kernel/vm_store_device.h
create mode 100755 headers/private/kernel/vm_store_null.h
create mode 100755 headers/private/kernel/vm_store_vnode.h
create mode 100755 headers/private/kernel/vm_translation_map.h
create mode 100755 headers/private/kernel/zero.h
create mode 100755 headers/private/kernel/zfs.h
create mode 100755 headers/private/kernel/zfs_fs.h
create mode 100644 headers/private/media/ChannelMixer.h
create mode 100644 headers/private/media/Decoder.h
create mode 100644 headers/private/media/Encoder.h
create mode 100644 headers/private/media/Extractor.h
create mode 100644 headers/private/media/PortPool.h
create mode 100644 headers/private/media/SampleConverter.h
create mode 100644 headers/private/media/SamplingrateConverter.h
create mode 100644 headers/private/media/SharedBufferList.h
create mode 100644 headers/private/media/TList.h
create mode 100644 headers/private/media/TMap.h
create mode 100644 headers/private/media/VolumeControl.h
create mode 100644 headers/private/media/Writer.h
create mode 100644 headers/private/media/debug.h
create mode 100644 headers/private/shared/ObjectList.h
create mode 100644 headers/private/storage/Elf.h
create mode 100644 headers/private/storage/Exception.h
create mode 100644 headers/private/storage/LibBeAdapter.h
create mode 100644 headers/private/storage/OffsetFile.h
create mode 100644 headers/private/storage/Pef.h
create mode 100644 headers/private/storage/QueryPredicate.h
create mode 100644 headers/private/storage/ResourceFile.h
create mode 100644 headers/private/storage/ResourceItem.h
create mode 100644 headers/private/storage/ResourcesContainer.h
create mode 100644 headers/private/storage/ResourcesDefs.h
create mode 100644 headers/private/storage/StorageDefs.Private.h
create mode 100644 headers/private/storage/kernel_interface.h
create mode 100644 headers/private/storage/storage_support.h
create mode 100644 headers/tools/cppunit/CppUnitShell.h
create mode 100644 headers/tools/cppunit/LockerSyncObject.h
create mode 100644 headers/tools/cppunit/TestCase.h
create mode 100644 headers/tools/cppunit/TestResult.h
create mode 100644 headers/tools/cppunit/TestShell.h
create mode 100644 headers/tools/cppunit/TestSuite.h
create mode 100644 headers/tools/cppunit/cppunit/Asserter.h
create mode 100644 headers/tools/cppunit/cppunit/CompilerOutputter.h
create mode 100644 headers/tools/cppunit/cppunit/Exception.h
create mode 100644 headers/tools/cppunit/cppunit/NotEqualException.h
create mode 100644 headers/tools/cppunit/cppunit/Outputter.h
create mode 100644 headers/tools/cppunit/cppunit/Portability.h
create mode 100644 headers/tools/cppunit/cppunit/SourceLine.h
create mode 100644 headers/tools/cppunit/cppunit/SynchronizedObject.h
create mode 100644 headers/tools/cppunit/cppunit/Test.h
create mode 100644 headers/tools/cppunit/cppunit/TestAssert.h
create mode 100644 headers/tools/cppunit/cppunit/TestCaller.h
create mode 100644 headers/tools/cppunit/cppunit/TestCase.h
create mode 100644 headers/tools/cppunit/cppunit/TestFailure.h
create mode 100644 headers/tools/cppunit/cppunit/TestFixture.h
create mode 100644 headers/tools/cppunit/cppunit/TestListener.h
create mode 100644 headers/tools/cppunit/cppunit/TestResult.h
create mode 100644 headers/tools/cppunit/cppunit/TestResultCollector.h
create mode 100644 headers/tools/cppunit/cppunit/TestSucessListener.h
create mode 100644 headers/tools/cppunit/cppunit/TestSuite.h
create mode 100644 headers/tools/cppunit/cppunit/TextOutputter.h
create mode 100644 headers/tools/cppunit/cppunit/TextTestProgressListener.h
create mode 100644 headers/tools/cppunit/cppunit/TextTestResult.h
create mode 100644 headers/tools/cppunit/cppunit/TextTestRunner.h
create mode 100644 headers/tools/cppunit/cppunit/XmlOutputter.h
create mode 100644 headers/tools/cppunit/cppunit/config-auto.h
create mode 100644 headers/tools/cppunit/cppunit/extensions/AutoRegisterSuite.h
create mode 100644 headers/tools/cppunit/cppunit/extensions/HelperMacros.h
create mode 100644 headers/tools/cppunit/cppunit/extensions/Orthodox.h
create mode 100644 headers/tools/cppunit/cppunit/extensions/RepeatedTest.h
create mode 100644 headers/tools/cppunit/cppunit/extensions/TestDecorator.h
create mode 100644 headers/tools/cppunit/cppunit/extensions/TestFactory.h
create mode 100644 headers/tools/cppunit/cppunit/extensions/TestFactoryRegistry.h
create mode 100644 headers/tools/cppunit/cppunit/extensions/TestSetUp.h
create mode 100644 headers/tools/cppunit/cppunit/extensions/TestSuiteBuilder.h
create mode 100644 headers/tools/cppunit/cppunit/extensions/TestSuiteFactory.h
create mode 100644 headers/tools/cppunit/cppunit/extensions/TypeInfoHelper.h
create mode 100644 headers/tools/cppunit/cppunit/ui/text/TestRunner.h
create mode 100644 src/add-ons/input_server/filters/screensaver/SSInputFilter.cpp
create mode 100644 src/add-ons/input_server/filters/screensaver/SSInputFilter.h
create mode 100644 src/add-ons/kernel/file_systems/befs/BPlusTree.cpp
create mode 100644 src/add-ons/kernel/file_systems/befs/BPlusTree.h
create mode 100644 src/add-ons/kernel/file_systems/befs/BlockAllocator.cpp
create mode 100644 src/add-ons/kernel/file_systems/befs/BlockAllocator.h
create mode 100644 src/add-ons/kernel/file_systems/befs/Chain.h
create mode 100644 src/add-ons/kernel/file_systems/befs/Debug.cpp
create mode 100644 src/add-ons/kernel/file_systems/befs/Debug.h
create mode 100644 src/add-ons/kernel/file_systems/befs/Index.cpp
create mode 100644 src/add-ons/kernel/file_systems/befs/Index.h
create mode 100644 src/add-ons/kernel/file_systems/befs/Inode.cpp
create mode 100644 src/add-ons/kernel/file_systems/befs/Inode.h
create mode 100644 src/add-ons/kernel/file_systems/befs/Journal.cpp
create mode 100644 src/add-ons/kernel/file_systems/befs/Journal.h
create mode 100644 src/add-ons/kernel/file_systems/befs/Lock.h
create mode 100644 src/add-ons/kernel/file_systems/befs/Query.cpp
create mode 100644 src/add-ons/kernel/file_systems/befs/Query.h
create mode 100644 src/add-ons/kernel/file_systems/befs/Stack.h
create mode 100644 src/add-ons/kernel/file_systems/befs/ToDo
create mode 100644 src/add-ons/kernel/file_systems/befs/Utility.cpp
create mode 100644 src/add-ons/kernel/file_systems/befs/Utility.h
create mode 100644 src/add-ons/kernel/file_systems/befs/Volume.cpp
create mode 100644 src/add-ons/kernel/file_systems/befs/Volume.h
create mode 100644 src/add-ons/kernel/file_systems/befs/bfs.h
create mode 100644 src/add-ons/kernel/file_systems/befs/cache.h
create mode 100644 src/add-ons/kernel/file_systems/befs/cpp.cpp
create mode 100644 src/add-ons/kernel/file_systems/befs/cpp.h
create mode 100644 src/add-ons/kernel/file_systems/befs/fsproto.h
create mode 100644 src/add-ons/kernel/file_systems/befs/kernel_interface.cpp
create mode 100644 src/add-ons/kernel/file_systems/befs/lock.h
create mode 100644 src/add-ons/print/drivers/canon_lips/libprint/AboutBox.cpp
create mode 100644 src/add-ons/print/drivers/canon_lips/libprint/AboutBox.h
create mode 100644 src/add-ons/print/drivers/canon_lips/libprint/DbgMsg.cpp
create mode 100644 src/add-ons/print/drivers/canon_lips/libprint/DbgMsg.h
create mode 100644 src/add-ons/print/drivers/canon_lips/libprint/Exports.h
create mode 100644 src/add-ons/print/drivers/canon_lips/libprint/GraphicsDriver.cpp
create mode 100644 src/add-ons/print/drivers/canon_lips/libprint/GraphicsDriver.h
create mode 100644 src/add-ons/print/drivers/canon_lips/libprint/Halftone.cpp
create mode 100644 src/add-ons/print/drivers/canon_lips/libprint/Halftone.h
create mode 100644 src/add-ons/print/drivers/canon_lips/libprint/JobData.cpp
create mode 100644 src/add-ons/print/drivers/canon_lips/libprint/JobData.h
create mode 100644 src/add-ons/print/drivers/canon_lips/libprint/JobSetupDlg.cpp
create mode 100644 src/add-ons/print/drivers/canon_lips/libprint/JobSetupDlg.h
create mode 100644 src/add-ons/print/drivers/canon_lips/libprint/PageSetupDlg.cpp
create mode 100644 src/add-ons/print/drivers/canon_lips/libprint/PageSetupDlg.h
create mode 100644 src/add-ons/print/drivers/canon_lips/libprint/Pattern.h
create mode 100644 src/add-ons/print/drivers/canon_lips/libprint/Preview.cpp
create mode 100644 src/add-ons/print/drivers/canon_lips/libprint/Preview.h
create mode 100644 src/add-ons/print/drivers/canon_lips/libprint/PrintProcess.cpp
create mode 100644 src/add-ons/print/drivers/canon_lips/libprint/PrintProcess.h
create mode 100644 src/add-ons/print/drivers/canon_lips/libprint/PrinterCap.cpp
create mode 100644 src/add-ons/print/drivers/canon_lips/libprint/PrinterCap.h
create mode 100644 src/add-ons/print/drivers/canon_lips/libprint/PrinterData.cpp
create mode 100644 src/add-ons/print/drivers/canon_lips/libprint/PrinterData.h
create mode 100644 src/add-ons/print/drivers/canon_lips/libprint/Transport.cpp
create mode 100644 src/add-ons/print/drivers/canon_lips/libprint/Transport.h
create mode 100644 src/add-ons/print/drivers/canon_lips/libprint/UIDriver.cpp
create mode 100644 src/add-ons/print/drivers/canon_lips/libprint/UIDriver.h
create mode 100644 src/add-ons/print/drivers/canon_lips/libprint/ValidRect.cpp
create mode 100644 src/add-ons/print/drivers/canon_lips/libprint/ValidRect.h
create mode 100644 src/add-ons/print/drivers/canon_lips/libprint/tools/make_pattern.cpp
create mode 100644 src/add-ons/print/drivers/canon_lips/libprint/tools/original_dither_pattern.h
create mode 100644 src/add-ons/print/drivers/canon_lips/lips3/Compress3.cpp
create mode 100644 src/add-ons/print/drivers/canon_lips/lips3/Compress3.h
create mode 100644 src/add-ons/print/drivers/canon_lips/lips3/Lips3.cpp
create mode 100644 src/add-ons/print/drivers/canon_lips/lips3/Lips3.h
create mode 100644 src/add-ons/print/drivers/canon_lips/lips3/Lips3.rsrc
create mode 100644 src/add-ons/print/drivers/canon_lips/lips3/Lips3Cap.cpp
create mode 100644 src/add-ons/print/drivers/canon_lips/lips3/Lips3Cap.h
create mode 100644 src/add-ons/print/drivers/canon_lips/lips3/Lips3Entry.cpp
create mode 100644 src/add-ons/print/drivers/canon_lips/lips4/Lips4.cpp
create mode 100644 src/add-ons/print/drivers/canon_lips/lips4/Lips4.h
create mode 100644 src/add-ons/print/drivers/canon_lips/lips4/Lips4.rsrc
create mode 100644 src/add-ons/print/drivers/canon_lips/lips4/Lips4Cap.cpp
create mode 100644 src/add-ons/print/drivers/canon_lips/lips4/Lips4Cap.h
create mode 100644 src/add-ons/print/drivers/canon_lips/lips4/Lips4Entry.cpp
create mode 100644 src/add-ons/print/drivers/canon_lips/lips4/PackBits.cpp
create mode 100644 src/add-ons/print/drivers/canon_lips/lips4/PackBits.h
create mode 100644 src/add-ons/print/drivers/pdf/CHANGES
create mode 100755 src/add-ons/print/drivers/pdf/Install
create mode 100644 src/add-ons/print/drivers/pdf/README
create mode 100644 src/add-ons/print/drivers/pdf/TODO
create mode 100644 src/add-ons/print/drivers/pdf/bookmarks/Sample
create mode 100755 src/add-ons/print/drivers/pdf/doc/Create_Report_Mail.sh
create mode 100644 src/add-ons/print/drivers/pdf/doc/IF.pdf
create mode 100644 src/add-ons/print/drivers/pdf/doc/Interactive Features.gbe
create mode 100644 src/add-ons/print/drivers/pdf/doc/User Guide.html
create mode 100644 src/add-ons/print/drivers/pdf/doc/credits.zip
create mode 100644 src/add-ons/print/drivers/pdf/doc/images/add_local_printer.jpeg
create mode 100644 src/add-ons/print/drivers/pdf/doc/images/add_printer.jpeg
create mode 100644 src/add-ons/print/drivers/pdf/doc/images/make_default_printer.jpeg
create mode 100644 src/add-ons/print/drivers/pdf/doc/images/preferences_printers.jpeg
create mode 100644 src/add-ons/print/drivers/pdf/doc/images/printers.jpeg
create mode 100644 src/add-ons/print/drivers/pdf/doc/pdf_icon.tga
create mode 100644 src/add-ons/print/drivers/pdf/encoding/t1enc0.enc
create mode 100644 src/add-ons/print/drivers/pdf/encoding/t1enc1.enc
create mode 100644 src/add-ons/print/drivers/pdf/encoding/t1enc2.enc
create mode 100644 src/add-ons/print/drivers/pdf/encoding/t1enc3.enc
create mode 100644 src/add-ons/print/drivers/pdf/encoding/t1enc4.enc
create mode 100644 src/add-ons/print/drivers/pdf/encoding/ttenc0.cpg
create mode 100644 src/add-ons/print/drivers/pdf/encoding/ttenc1.cpg
create mode 100644 src/add-ons/print/drivers/pdf/encoding/ttenc2.cpg
create mode 100644 src/add-ons/print/drivers/pdf/encoding/ttenc3.cpg
create mode 100644 src/add-ons/print/drivers/pdf/encoding/ttenc4.cpg
create mode 100644 src/add-ons/print/drivers/pdf/source/AdvancedSettingsWindow.cpp
create mode 100644 src/add-ons/print/drivers/pdf/source/AdvancedSettingsWindow.h
create mode 100644 src/add-ons/print/drivers/pdf/source/Bezier.cpp
create mode 100644 src/add-ons/print/drivers/pdf/source/Bezier.h
create mode 100644 src/add-ons/print/drivers/pdf/source/Bookmark.cpp
create mode 100644 src/add-ons/print/drivers/pdf/source/Bookmark.h
create mode 100644 src/add-ons/print/drivers/pdf/source/Defs4PPC.pch++
create mode 100644 src/add-ons/print/drivers/pdf/source/DocInfoWindow.cpp
create mode 100644 src/add-ons/print/drivers/pdf/source/DocInfoWindow.h
create mode 100644 src/add-ons/print/drivers/pdf/source/DrawShape.cpp
create mode 100644 src/add-ons/print/drivers/pdf/source/DrawShape.h
create mode 100644 src/add-ons/print/drivers/pdf/source/Driver.cpp
create mode 100644 src/add-ons/print/drivers/pdf/source/Driver.h
create mode 100644 src/add-ons/print/drivers/pdf/source/Fonts.cpp
create mode 100644 src/add-ons/print/drivers/pdf/source/Fonts.h
create mode 100644 src/add-ons/print/drivers/pdf/source/FontsWindow.cpp
create mode 100644 src/add-ons/print/drivers/pdf/source/FontsWindow.h
create mode 100644 src/add-ons/print/drivers/pdf/source/JobSetupWindow.cpp
create mode 100644 src/add-ons/print/drivers/pdf/source/JobSetupWindow.h
create mode 100644 src/add-ons/print/drivers/pdf/source/LinePathBuilder.cpp
create mode 100644 src/add-ons/print/drivers/pdf/source/LinePathBuilder.h
create mode 100644 src/add-ons/print/drivers/pdf/source/Link.cpp
create mode 100644 src/add-ons/print/drivers/pdf/source/Link.h
create mode 100644 src/add-ons/print/drivers/pdf/source/Log.h
create mode 100644 src/add-ons/print/drivers/pdf/source/MarginView.cpp
create mode 100644 src/add-ons/print/drivers/pdf/source/MarginView.h
create mode 100644 src/add-ons/print/drivers/pdf/source/MessagePrinter.cpp
create mode 100644 src/add-ons/print/drivers/pdf/source/MessagePrinter.h
create mode 100644 src/add-ons/print/drivers/pdf/source/Notes.txt
create mode 100644 src/add-ons/print/drivers/pdf/source/PDFLinePathBuilder.cpp
create mode 100644 src/add-ons/print/drivers/pdf/source/PDFLinePathBuilder.h
create mode 100644 src/add-ons/print/drivers/pdf/source/PDFText.cpp
create mode 100644 src/add-ons/print/drivers/pdf/source/PDFWriter.cpp
create mode 100644 src/add-ons/print/drivers/pdf/source/PDFWriter.h
create mode 100644 src/add-ons/print/drivers/pdf/source/PDFWriter.rsrc
create mode 100644 src/add-ons/print/drivers/pdf/source/PageSetupWindow.cpp
create mode 100644 src/add-ons/print/drivers/pdf/source/PageSetupWindow.h
create mode 100644 src/add-ons/print/drivers/pdf/source/PictureIterator.cpp
create mode 100644 src/add-ons/print/drivers/pdf/source/PictureIterator.h
create mode 100644 src/add-ons/print/drivers/pdf/source/PrinterDriver.cpp
create mode 100644 src/add-ons/print/drivers/pdf/source/PrinterDriver.h
create mode 100644 src/add-ons/print/drivers/pdf/source/PrinterPrefs.cpp
create mode 100644 src/add-ons/print/drivers/pdf/source/PrinterPrefs.h
create mode 100644 src/add-ons/print/drivers/pdf/source/PrinterSettings.cpp
create mode 100644 src/add-ons/print/drivers/pdf/source/PrinterSettings.h
create mode 100644 src/add-ons/print/drivers/pdf/source/PrinterSetupWindow.cpp
create mode 100644 src/add-ons/print/drivers/pdf/source/PrinterSetupWindow.h
create mode 100644 src/add-ons/print/drivers/pdf/source/RegExp.cpp
create mode 100644 src/add-ons/print/drivers/pdf/source/RegExp.h
create mode 100644 src/add-ons/print/drivers/pdf/source/Report.cpp
create mode 100644 src/add-ons/print/drivers/pdf/source/Report.h
create mode 100644 src/add-ons/print/drivers/pdf/source/Scanner.cpp
create mode 100644 src/add-ons/print/drivers/pdf/source/Scanner.h
create mode 100644 src/add-ons/print/drivers/pdf/source/StatusWindow.cpp
create mode 100644 src/add-ons/print/drivers/pdf/source/StatusWindow.h
create mode 100644 src/add-ons/print/drivers/pdf/source/SubPath.cpp
create mode 100644 src/add-ons/print/drivers/pdf/source/SubPath.h
create mode 100644 src/add-ons/print/drivers/pdf/source/Utils.cpp
create mode 100644 src/add-ons/print/drivers/pdf/source/Utils.h
create mode 100644 src/add-ons/print/drivers/pdf/source/XReferences.cpp
create mode 100644 src/add-ons/print/drivers/pdf/source/XReferences.h
create mode 100755 src/add-ons/print/drivers/pdf/source/_CopyAndRestart
create mode 100644 src/add-ons/print/drivers/pdf/source/cns1.h
create mode 100644 src/add-ons/print/drivers/pdf/source/enc_range.h
create mode 100644 src/add-ons/print/drivers/pdf/source/gb1.h
create mode 100644 src/add-ons/print/drivers/pdf/source/japanese.h
create mode 100644 src/add-ons/print/drivers/pdf/source/korean.h
create mode 100644 src/add-ons/print/drivers/pdf/source/pdflib.h
create mode 100644 src/add-ons/print/drivers/pdf/source/unicode0.h
create mode 100644 src/add-ons/print/drivers/pdf/source/unicode1.h
create mode 100644 src/add-ons/print/drivers/pdf/source/unicode2.h
create mode 100644 src/add-ons/print/drivers/pdf/source/unicode3.h
create mode 100644 src/add-ons/print/drivers/pdf/source/unicode4.h
create mode 100644 src/add-ons/print/drivers/pdf/xrefs/Deutsch
create mode 100644 src/add-ons/print/drivers/pdf/xrefs/English
create mode 100644 src/add-ons/print/transports/ipp/HttpURLConnection.cpp
create mode 100644 src/add-ons/print/transports/ipp/HttpURLConnection.h
create mode 100644 src/add-ons/print/transports/ipp/Ipp.cpp
create mode 100644 src/add-ons/print/transports/ipp/IppContent.cpp
create mode 100644 src/add-ons/print/transports/ipp/IppContent.h
create mode 100644 src/add-ons/print/transports/ipp/IppDefs.h
create mode 100644 src/add-ons/print/transports/ipp/IppSetupDlg.cpp
create mode 100644 src/add-ons/print/transports/ipp/IppSetupDlg.h
create mode 100644 src/add-ons/print/transports/ipp/IppTransport.cpp
create mode 100644 src/add-ons/print/transports/ipp/IppTransport.h
create mode 100644 src/add-ons/print/transports/ipp/IppURLConnection.cpp
create mode 100644 src/add-ons/print/transports/ipp/IppURLConnection.h
create mode 100644 src/add-ons/print/transports/ipp/URL.cpp
create mode 100644 src/add-ons/print/transports/ipp/URL.h
create mode 100644 src/add-ons/print/transports/lpr/Lpr.cpp
create mode 100644 src/add-ons/print/transports/lpr/LprDefs.h
create mode 100644 src/add-ons/print/transports/lpr/LprSetupDlg.cpp
create mode 100644 src/add-ons/print/transports/lpr/LprSetupDlg.h
create mode 100644 src/add-ons/print/transports/lpr/LprTransport.cpp
create mode 100644 src/add-ons/print/transports/lpr/LprTransport.h
create mode 100644 src/add-ons/print/transports/lpr/LpsClient.cpp
create mode 100644 src/add-ons/print/transports/lpr/LpsClient.h
create mode 100644 src/add-ons/print/transports/print_to_file/FileSelector.cpp
create mode 100644 src/add-ons/print/transports/print_to_file/FileSelector.h
create mode 100644 src/add-ons/print/transports/print_to_file/print_transport.cpp
create mode 100644 src/add-ons/print/transports/shared/DbgMsg.cpp
create mode 100644 src/add-ons/print/transports/shared/DbgMsg.h
create mode 100644 src/add-ons/print/transports/shared/Socket.cpp
create mode 100644 src/add-ons/print/transports/shared/Socket.h
create mode 100644 src/add-ons/print/transports/shared/SocketStream.h
create mode 100644 src/add-ons/print/transports/shared/SocketStream1.cpp
create mode 100644 src/add-ons/print/transports/shared/SocketStream1.h
create mode 100644 src/add-ons/print/transports/shared/SocketStream2.cpp
create mode 100644 src/add-ons/print/transports/shared/SocketStream2.h
create mode 100644 src/apps/Jamfile
create mode 100644 src/apps/bin/alert.cpp
create mode 100644 src/apps/bin/chop.c
create mode 100644 src/apps/bin/clipboard.cpp
create mode 100644 src/apps/bin/echo.c
create mode 100644 src/apps/bin/gnu/chgrp.c
create mode 100644 src/apps/bin/gnu/chmod.c
create mode 100644 src/apps/bin/gnu/chown-core.c
create mode 100644 src/apps/bin/gnu/chown-core.h
create mode 100644 src/apps/bin/gnu/chown.c
create mode 100644 src/apps/bin/gnu/copy.c
create mode 100644 src/apps/bin/gnu/copy.h
create mode 100644 src/apps/bin/gnu/cp-hash.c
create mode 100644 src/apps/bin/gnu/cp-hash.h
create mode 100644 src/apps/bin/gnu/cp.c
create mode 100644 src/apps/bin/gnu/dd.c
create mode 100644 src/apps/bin/gnu/df.c
create mode 100644 src/apps/bin/gnu/du.c
create mode 100644 src/apps/bin/gnu/install.c
create mode 100644 src/apps/bin/gnu/ln.c
create mode 100644 src/apps/bin/gnu/ls-dir.c
create mode 100644 src/apps/bin/gnu/ls-ls.c
create mode 100644 src/apps/bin/gnu/ls-vdir.c
create mode 100644 src/apps/bin/gnu/ls.c
create mode 100644 src/apps/bin/gnu/ls.h
create mode 100644 src/apps/bin/gnu/mkdir.c
create mode 100644 src/apps/bin/gnu/mkfifo.c
create mode 100644 src/apps/bin/gnu/mknod.c
create mode 100644 src/apps/bin/gnu/mv.c
create mode 100644 src/apps/bin/gnu/remove.c
create mode 100644 src/apps/bin/gnu/remove.h
create mode 100644 src/apps/bin/gnu/rm.c
create mode 100644 src/apps/bin/gnu/rmdir.c
create mode 100644 src/apps/bin/gnu/sync.c
create mode 100644 src/apps/bin/gnu/sys2.h
create mode 100644 src/apps/bin/gnu/system.h
create mode 100644 src/apps/bin/gnu/touch.c
create mode 100644 src/apps/bin/hd.c
create mode 100644 src/apps/bin/listarea.c
create mode 100644 src/apps/bin/listdev/cm_wrapper.c
create mode 100644 src/apps/bin/listdev/cm_wrapper.h
create mode 100644 src/apps/bin/listdev/config_driver.h
create mode 100644 src/apps/bin/listdev/listdev.c
create mode 100644 src/apps/bin/listimage.c
create mode 100644 src/apps/bin/listport.c
create mode 100644 src/apps/bin/listsem.c
create mode 100644 src/apps/bin/mkdos/fat.h
create mode 100644 src/apps/bin/mkdos/mkdos.cpp
create mode 100644 src/apps/bin/pc/lex.h
create mode 100644 src/apps/bin/pc/pc.c
create mode 100644 src/apps/bin/prio.c
create mode 100644 src/apps/bin/ps.c
create mode 100644 src/apps/bin/renice.c
create mode 100644 src/apps/bin/rescan.c
create mode 100644 src/apps/bin/roster.cpp
create mode 100644 src/apps/bin/unchop.c
create mode 100644 src/apps/bin/waitfor.c
create mode 100644 src/apps/bin/wc.c
create mode 100644 src/apps/clock/Clock.rsrc
create mode 100644 src/apps/clock/LICENSE
create mode 100644 src/apps/clock/README.Clock
create mode 100644 src/apps/clock/cl_view.cpp
create mode 100644 src/apps/clock/cl_view.h
create mode 100644 src/apps/clock/cl_wind.cpp
create mode 100644 src/apps/clock/cl_wind.h
create mode 100644 src/apps/clock/clock.cpp
create mode 100644 src/apps/clock/clock.h
create mode 100644 src/apps/magnify/LICENSE
create mode 100644 src/apps/magnify/Magnify.rsrc
create mode 100644 src/apps/magnify/main.cpp
create mode 100644 src/apps/magnify/main.h
create mode 100644 src/apps/pulse/BottomPrefsView.cpp
create mode 100644 src/apps/pulse/BottomPrefsView.h
create mode 100644 src/apps/pulse/CPUButton.cpp
create mode 100644 src/apps/pulse/CPUButton.h
create mode 100644 src/apps/pulse/Common.h
create mode 100644 src/apps/pulse/ConfigView.cpp
create mode 100644 src/apps/pulse/ConfigView.h
create mode 100644 src/apps/pulse/DeskbarPulseView.cpp
create mode 100644 src/apps/pulse/DeskbarPulseView.h
create mode 100644 src/apps/pulse/LICENSE
create mode 100644 src/apps/pulse/MiniPulseView.cpp
create mode 100644 src/apps/pulse/MiniPulseView.h
create mode 100644 src/apps/pulse/NormalPulseView.cpp
create mode 100644 src/apps/pulse/NormalPulseView.h
create mode 100644 src/apps/pulse/Pictures
create mode 100644 src/apps/pulse/Prefs.cpp
create mode 100644 src/apps/pulse/Prefs.h
create mode 100644 src/apps/pulse/PrefsWindow.cpp
create mode 100644 src/apps/pulse/PrefsWindow.h
create mode 100644 src/apps/pulse/ProgressBar.cpp
create mode 100644 src/apps/pulse/ProgressBar.h
create mode 100644 src/apps/pulse/Pulse.rsrc
create mode 100644 src/apps/pulse/PulseApp.cpp
create mode 100644 src/apps/pulse/PulseApp.h
create mode 100644 src/apps/pulse/PulseView.cpp
create mode 100644 src/apps/pulse/PulseView.h
create mode 100644 src/apps/pulse/PulseWindow.cpp
create mode 100644 src/apps/pulse/PulseWindow.h
create mode 100644 src/kernel/Jamfile
create mode 100644 src/kernel/TODO
create mode 100644 src/kernel/apps/Jamfile
create mode 100644 src/kernel/apps/echo/Jamfile
create mode 100644 src/kernel/apps/echo/main.c
create mode 100644 src/kernel/apps/false_main.c
create mode 100644 src/kernel/apps/fibo_main.c
create mode 100644 src/kernel/apps/filetest/Jamfile
create mode 100644 src/kernel/apps/filetest/main.c
create mode 100644 src/kernel/apps/fortune/Jamfile
create mode 100644 src/kernel/apps/fortune/fortunes
create mode 100644 src/kernel/apps/fortune/main.c
create mode 100644 src/kernel/apps/hostname/Jamfile
create mode 100644 src/kernel/apps/hostname/main.c
create mode 100644 src/kernel/apps/init.c
create mode 100644 src/kernel/apps/ls/Jamfile
create mode 100644 src/kernel/apps/ls/main.c
create mode 100644 src/kernel/apps/mount/Jamfile
create mode 100644 src/kernel/apps/mount/main.c
create mode 100644 src/kernel/apps/ps/Jamfile
create mode 100644 src/kernel/apps/ps/main.c
create mode 100644 src/kernel/apps/rld/Jamfile
create mode 100644 src/kernel/apps/rld/arch/rldreloc.inc
create mode 100644 src/kernel/apps/rld/arch/x86/rld.ld
create mode 100644 src/kernel/apps/rld/arch/x86/rldreloc.inc
create mode 100644 src/kernel/apps/rld/rld.c
create mode 100644 src/kernel/apps/rld/rld0.c
create mode 100644 src/kernel/apps/rld/rld_priv.h
create mode 100644 src/kernel/apps/rld/rldaux.c
create mode 100644 src/kernel/apps/rld/rldbeos.c
create mode 100644 src/kernel/apps/rld/rldelf.c
create mode 100644 src/kernel/apps/rld/rldheap.c
create mode 100644 src/kernel/apps/rld/rldunix.c
create mode 100644 src/kernel/apps/shell/Jamfile
create mode 100644 src/kernel/apps/shell/args.c
create mode 100644 src/kernel/apps/shell/args.h
create mode 100644 src/kernel/apps/shell/commands.c
create mode 100644 src/kernel/apps/shell/commands.h
create mode 100644 src/kernel/apps/shell/file_utils.c
create mode 100644 src/kernel/apps/shell/file_utils.h
create mode 100644 src/kernel/apps/shell/main.c
create mode 100644 src/kernel/apps/shell/parse.c
create mode 100644 src/kernel/apps/shell/parse.h
create mode 100644 src/kernel/apps/shell/script.c
create mode 100644 src/kernel/apps/shell/script.h
create mode 100644 src/kernel/apps/shell/shell_defs.h
create mode 100644 src/kernel/apps/shell/shell_history.c
create mode 100644 src/kernel/apps/shell/shell_history.h
create mode 100644 src/kernel/apps/shell/shell_vars.c
create mode 100644 src/kernel/apps/shell/shell_vars.h
create mode 100644 src/kernel/apps/shell/statements.c
create mode 100644 src/kernel/apps/shell/statements.h
create mode 100644 src/kernel/apps/sockettest/Jamfile
create mode 100644 src/kernel/apps/sockettest/main.c
create mode 100644 src/kernel/apps/testapp/Jamfile
create mode 100644 src/kernel/apps/testapp/main.c
create mode 100644 src/kernel/apps/testdigit/Jamfile
create mode 100644 src/kernel/apps/testdigit/main.c
create mode 100644 src/kernel/apps/tests/Jamfile
create mode 100644 src/kernel/apps/tests/fops_test.c
create mode 100644 src/kernel/apps/tests/thread_test.c
create mode 100644 src/kernel/apps/true_main.c
create mode 100644 src/kernel/apps/uname/Jamfile
create mode 100644 src/kernel/apps/uname/main.c
create mode 100644 src/kernel/apps/unmount/Jamfile
create mode 100644 src/kernel/apps/unmount/main.c
create mode 100644 src/kernel/boot/Jamfile
create mode 100644 src/kernel/boot/arch/Jamfile
create mode 100644 src/kernel/boot/arch/alpha/Jamfile
create mode 100644 src/kernel/boot/arch/alpha/stage2.c
create mode 100644 src/kernel/boot/arch/alpha/stage2.ld
create mode 100644 src/kernel/boot/arch/alpha/stage2.mk
create mode 100644 src/kernel/boot/arch/m68k/Jamfile
create mode 100644 src/kernel/boot/arch/m68k/boot.mk
create mode 100644 src/kernel/boot/arch/m68k/config.ini
create mode 100644 src/kernel/boot/arch/m68k/stage1.S
create mode 100644 src/kernel/boot/arch/m68k/stage1.ld
create mode 100644 src/kernel/boot/arch/m68k/stage2.c
create mode 100644 src/kernel/boot/arch/m68k/stage2.ld
create mode 100644 src/kernel/boot/arch/m68k/stage2_asm.S
create mode 100644 src/kernel/boot/arch/m68k/stage2_nextmon.c
create mode 100644 src/kernel/boot/arch/m68k/stage2_text.c
create mode 100644 src/kernel/boot/arch/mips/Jamfile
create mode 100644 src/kernel/boot/arch/mips/boot.mk
create mode 100644 src/kernel/boot/arch/mips/config.ini
create mode 100644 src/kernel/boot/arch/mips/stage1.S
create mode 100644 src/kernel/boot/arch/mips/stage1.ld
create mode 100644 src/kernel/boot/arch/mips/stage2.c
create mode 100644 src/kernel/boot/arch/mips/stage2.ld
create mode 100644 src/kernel/boot/arch/ppc/Jamfile
create mode 100644 src/kernel/boot/arch/ppc/boot.mk
create mode 100644 src/kernel/boot/arch/ppc/config.ini
create mode 100644 src/kernel/boot/arch/ppc/stage1.S
create mode 100644 src/kernel/boot/arch/ppc/stage1.ld
create mode 100644 src/kernel/boot/arch/ppc/stage2.c
create mode 100644 src/kernel/boot/arch/ppc/stage2.ld
create mode 100644 src/kernel/boot/arch/ppc/stage2_asm.S
create mode 100644 src/kernel/boot/arch/ppc/stage2_faults.c
create mode 100644 src/kernel/boot/arch/ppc/stage2_mmu.c
create mode 100644 src/kernel/boot/arch/ppc/stage2_of.c
create mode 100644 src/kernel/boot/arch/ppc/stage2_text.c
create mode 100644 src/kernel/boot/arch/sh4/Jamfile
create mode 100644 src/kernel/boot/arch/sh4/boot.mk
create mode 100644 src/kernel/boot/arch/sh4/config.ini
create mode 100644 src/kernel/boot/arch/sh4/mmu.c
create mode 100644 src/kernel/boot/arch/sh4/serial.c
create mode 100644 src/kernel/boot/arch/sh4/stage1.S
create mode 100644 src/kernel/boot/arch/sh4/stage2.c
create mode 100644 src/kernel/boot/arch/sh4/stage2.ld
create mode 100644 src/kernel/boot/arch/sh4/vcpu.S
create mode 100644 src/kernel/boot/arch/sh4/vcpu_c.c
create mode 100644 src/kernel/boot/arch/sparc/Jamfile
create mode 100644 src/kernel/boot/arch/sparc/closeall.c
create mode 100644 src/kernel/boot/arch/sparc/dvma.c
create mode 100644 src/kernel/boot/arch/sparc/libkern/__main.c
create mode 100644 src/kernel/boot/arch/sparc/libkern/bzero.c
create mode 100644 src/kernel/boot/arch/sparc/libkern/udiv.S
create mode 100644 src/kernel/boot/arch/sparc/libkern/urem.S
create mode 100644 src/kernel/boot/arch/sparc/libsa/alloc.c
create mode 100644 src/kernel/boot/arch/sparc/libsa/exit.c
create mode 100644 src/kernel/boot/arch/sparc/libsa/memcmp.c
create mode 100644 src/kernel/boot/arch/sparc/libsa/memcpy.c
create mode 100644 src/kernel/boot/arch/sparc/libsa/memset.c
create mode 100644 src/kernel/boot/arch/sparc/libsa/printf.c
create mode 100644 src/kernel/boot/arch/sparc/libsa/strcmp.c
create mode 100644 src/kernel/boot/arch/sparc/promdev.c
create mode 100644 src/kernel/boot/arch/sparc/srt0.S
create mode 100644 src/kernel/boot/arch/sparc/stage2.c
create mode 100644 src/kernel/boot/arch/sparc/stage2.mk
create mode 100644 src/kernel/boot/arch/sparc64/Jamfile
create mode 100644 src/kernel/boot/arch/sparc64/stage2.mk
create mode 100644 src/kernel/boot/arch/x86/Jamfile
create mode 100644 src/kernel/boot/arch/x86/bootblock.asm
create mode 100644 src/kernel/boot/arch/x86/bootblock.bin
create mode 100644 src/kernel/boot/arch/x86/smp_boot.c
create mode 100644 src/kernel/boot/arch/x86/smp_trampoline.S
create mode 100644 src/kernel/boot/arch/x86/stage2.c
create mode 100644 src/kernel/boot/arch/x86/stage2.ld
create mode 100644 src/kernel/boot/arch/x86/stage2_asm.S
create mode 100644 src/kernel/boot/bin2asm.c
create mode 100644 src/kernel/boot/bin2h.c
create mode 100644 src/kernel/boot/bootmaker.c
create mode 100644 src/kernel/boot/makeflop.c
create mode 100644 src/kernel/core/Jamfile
create mode 100644 src/kernel/core/addons/Jamfile
create mode 100644 src/kernel/core/addons/bus_managers/Jamfile
create mode 100755 src/kernel/core/addons/bus_managers/bus_init.c
create mode 100755 src/kernel/core/addons/bus_managers/bus_man.c
create mode 100644 src/kernel/core/addons/bus_managers/isa/Jamfile
create mode 100755 src/kernel/core/addons/bus_managers/isa/isa.c
create mode 100644 src/kernel/core/addons/bus_managers/pci/Jamfile
create mode 100755 src/kernel/core/addons/bus_managers/pci/pci.c
create mode 100755 src/kernel/core/addons/bus_managers/pci/pci_bus.c
create mode 100755 src/kernel/core/arch/Jamfile
create mode 100755 src/kernel/core/arch/m68k/arch_kernel.mk
create mode 100755 src/kernel/core/arch/m68k/kernel.ld
create mode 100755 src/kernel/core/arch/mips/arch_asm.S
create mode 100755 src/kernel/core/arch/mips/arch_cpu.c
create mode 100755 src/kernel/core/arch/mips/arch_dbg_console.c
create mode 100755 src/kernel/core/arch/mips/arch_debug.c
create mode 100755 src/kernel/core/arch/mips/arch_faults.c
create mode 100755 src/kernel/core/arch/mips/arch_int.c
create mode 100755 src/kernel/core/arch/mips/arch_kernel.mk
create mode 100755 src/kernel/core/arch/mips/arch_pmap.c
create mode 100755 src/kernel/core/arch/mips/arch_smp.c
create mode 100755 src/kernel/core/arch/mips/arch_thread.c
create mode 100755 src/kernel/core/arch/mips/arch_timer.c
create mode 100755 src/kernel/core/arch/mips/arch_vm.c
create mode 100755 src/kernel/core/arch/mips/kernel.ld
create mode 100755 src/kernel/core/arch/ppc/arch_asm.S
create mode 100755 src/kernel/core/arch/ppc/arch_cpu.c
create mode 100755 src/kernel/core/arch/ppc/arch_dbg_console.c
create mode 100755 src/kernel/core/arch/ppc/arch_debug.c
create mode 100755 src/kernel/core/arch/ppc/arch_faults.c
create mode 100755 src/kernel/core/arch/ppc/arch_int.c
create mode 100755 src/kernel/core/arch/ppc/arch_kernel.mk
create mode 100755 src/kernel/core/arch/ppc/arch_smp.c
create mode 100755 src/kernel/core/arch/ppc/arch_thread.c
create mode 100755 src/kernel/core/arch/ppc/arch_timer.c
create mode 100755 src/kernel/core/arch/ppc/arch_vm.c
create mode 100755 src/kernel/core/arch/ppc/arch_vm_translation_map.c
create mode 100755 src/kernel/core/arch/ppc/kernel.ld
create mode 100755 src/kernel/core/arch/sh4/addon.ld
create mode 100755 src/kernel/core/arch/sh4/arch_asm.S
create mode 100755 src/kernel/core/arch/sh4/arch_cpu.c
create mode 100755 src/kernel/core/arch/sh4/arch_dbg_console.c
create mode 100755 src/kernel/core/arch/sh4/arch_debug.c
create mode 100755 src/kernel/core/arch/sh4/arch_faults.c
create mode 100755 src/kernel/core/arch/sh4/arch_int.c
create mode 100755 src/kernel/core/arch/sh4/arch_pmap.c
create mode 100755 src/kernel/core/arch/sh4/arch_smp.c
create mode 100755 src/kernel/core/arch/sh4/arch_thread.c
create mode 100755 src/kernel/core/arch/sh4/arch_timer.c
create mode 100755 src/kernel/core/arch/sh4/arch_vm.c
create mode 100755 src/kernel/core/arch/sh4/arch_vm_translation_map.c
create mode 100755 src/kernel/core/arch/sh4/kernel.ld
create mode 100755 src/kernel/core/arch/sparc/arch_kernel.mk
create mode 100755 src/kernel/core/arch/sparc64/arch_kernel.mk
create mode 100644 src/kernel/core/arch/x86/Jamfile
create mode 100755 src/kernel/core/arch/x86/addon.ld
create mode 100755 src/kernel/core/arch/x86/arch_cpu.c
create mode 100755 src/kernel/core/arch/x86/arch_dbg_console.c
create mode 100755 src/kernel/core/arch/x86/arch_debug.c
create mode 100755 src/kernel/core/arch/x86/arch_faults.c
create mode 100755 src/kernel/core/arch/x86/arch_int.c
create mode 100755 src/kernel/core/arch/x86/arch_interrupts.S
create mode 100755 src/kernel/core/arch/x86/arch_smp.c
create mode 100755 src/kernel/core/arch/x86/arch_thread.c
create mode 100755 src/kernel/core/arch/x86/arch_timer.c
create mode 100755 src/kernel/core/arch/x86/arch_vm.c
create mode 100755 src/kernel/core/arch/x86/arch_vm_translation_map.c
create mode 100755 src/kernel/core/arch/x86/arch_x86.S
create mode 100644 src/kernel/core/arch/x86/int.c
create mode 100644 src/kernel/core/arch/x86/kernel.ld
create mode 100644 src/kernel/core/cbuf.c
create mode 100644 src/kernel/core/console.c
create mode 100644 src/kernel/core/cpu.c
create mode 100644 src/kernel/core/debug.c
create mode 100644 src/kernel/core/elf.c
create mode 100644 src/kernel/core/faults.c
create mode 100644 src/kernel/core/fd.c
create mode 100644 src/kernel/core/fs/Jamfile
create mode 100755 src/kernel/core/fs/bootfs.c
create mode 100755 src/kernel/core/fs/devfs.c
create mode 100755 src/kernel/core/fs/rootfs.c
create mode 100755 src/kernel/core/fs/vfs.c
create mode 100644 src/kernel/core/gdb.c
create mode 100644 src/kernel/core/heap.c
create mode 100644 src/kernel/core/int.c
create mode 100644 src/kernel/core/khash.c
create mode 100644 src/kernel/core/linkhack.c
create mode 100644 src/kernel/core/lock.c
create mode 100644 src/kernel/core/main.c
create mode 100644 src/kernel/core/misc.c
create mode 100644 src/kernel/core/module.c
create mode 100644 src/kernel/core/port.c
create mode 100644 src/kernel/core/queue.c
create mode 100644 src/kernel/core/sem.c
create mode 100644 src/kernel/core/smp.c
create mode 100644 src/kernel/core/syscalls.c
create mode 100644 src/kernel/core/sysctl.c
create mode 100644 src/kernel/core/thread.c
create mode 100644 src/kernel/core/timer.c
create mode 100644 src/kernel/core/vm/Jamfile
create mode 100755 src/kernel/core/vm/vm.c
create mode 100755 src/kernel/core/vm/vm_cache.c
create mode 100755 src/kernel/core/vm/vm_daemons.c
create mode 100755 src/kernel/core/vm/vm_page.c
create mode 100755 src/kernel/core/vm/vm_store_anonymous_noswap.c
create mode 100755 src/kernel/core/vm/vm_store_device.c
create mode 100755 src/kernel/core/vm/vm_store_null.c
create mode 100755 src/kernel/core/vm/vm_store_vnode.c
create mode 100755 src/kernel/core/vm/vm_tests.c
create mode 100644 src/kernel/drivers/Jamfile
create mode 100644 src/kernel/drivers/arch/Jamfile
create mode 100644 src/kernel/drivers/arch/x86/Jamfile
create mode 100644 src/kernel/drivers/arch/x86/console/Jamfile
create mode 100755 src/kernel/drivers/arch/x86/console/console.c
create mode 100644 src/kernel/drivers/arch/x86/ide/Jamfile
create mode 100755 src/kernel/drivers/arch/x86/ide/ide.c
create mode 100755 src/kernel/drivers/arch/x86/ide/ide_raw.c
create mode 100644 src/kernel/drivers/arch/x86/keyboard/Jamfile
create mode 100755 src/kernel/drivers/arch/x86/keyboard/keyboard.c
create mode 100644 src/kernel/drivers/arch/x86/ps2mouse/Jamfile
create mode 100755 src/kernel/drivers/arch/x86/ps2mouse/ps2mouse.c
create mode 100755 src/kernel/drivers/beos.c
create mode 100755 src/kernel/drivers/dev.c
create mode 100755 src/kernel/drivers/devs.c
create mode 100644 src/kernel/drivers/fb_console/Jamfile
create mode 100755 src/kernel/drivers/fb_console/fb_console.c
create mode 100755 src/kernel/glue/Jamfile
create mode 100755 src/kernel/glue/crt0.c
create mode 100755 src/kernel/glue/lib0.c
create mode 100644 src/kernel/ldscripts/sh4/library.ld
create mode 100644 src/kernel/ldscripts/x86/app.ld
create mode 100644 src/kernel/ldscripts/x86/library.ld
create mode 100755 src/kernel/libroot/Jamfile
create mode 100755 src/kernel/libroot/libroot.c
create mode 100755 src/kernel/libroot/libroot.h
create mode 100755 src/kernel/libroot/libroot_types.h
create mode 100644 src/kits/app/Application.cpp
create mode 100644 src/kits/app/Cursor.cpp
create mode 100644 src/kits/app/Handler.cpp
create mode 100644 src/kits/app/Invoker.cpp
create mode 100644 src/kits/app/Jamfile
create mode 100644 src/kits/app/Looper.cpp
create mode 100644 src/kits/app/MessageFilter.cpp
create mode 100644 src/kits/app/MessageQueue.cpp
create mode 100644 src/kits/app/Messenger.cpp
create mode 100644 src/kits/app/PortLink.cpp
create mode 100644 src/kits/app/TokenSpace.cpp
create mode 100644 src/kits/app/app.src
create mode 100644 src/kits/interface/Alert.cpp
create mode 100644 src/kits/interface/Box.cpp
create mode 100644 src/kits/interface/Button.cpp
create mode 100644 src/kits/interface/CheckBox.cpp
create mode 100644 src/kits/interface/Control.cpp
create mode 100644 src/kits/interface/Input.cpp
create mode 100644 src/kits/interface/Jamfile
create mode 100644 src/kits/interface/ListItem.cpp
create mode 100644 src/kits/interface/ListView.cpp
create mode 100644 src/kits/interface/Point.cpp
create mode 100644 src/kits/interface/PrintJob.cpp
create mode 100644 src/kits/interface/RadioButton.cpp
create mode 100644 src/kits/interface/Rect.cpp
create mode 100644 src/kits/interface/StatusBar.cpp
create mode 100644 src/kits/interface/StringItem.cpp
create mode 100644 src/kits/interface/StringView.cpp
create mode 100644 src/kits/interface/TextControl.cpp
create mode 100644 src/kits/interface/TextInput.cpp
create mode 100644 src/kits/interface/interface.src
create mode 100644 src/kits/media/!missing_symbols.cpp
create mode 100644 src/kits/media/Buffer.cpp
create mode 100644 src/kits/media/BufferConsumer.cpp
create mode 100644 src/kits/media/BufferGroup.cpp
create mode 100644 src/kits/media/BufferIdCache.cpp
create mode 100644 src/kits/media/BufferIdCache.h
create mode 100644 src/kits/media/BufferProducer.cpp
create mode 100644 src/kits/media/ChannelMixer.cpp
create mode 100644 src/kits/media/Controllable.cpp
create mode 100644 src/kits/media/DormantNodeManager.cpp
create mode 100644 src/kits/media/DormantNodeManager.h
create mode 100644 src/kits/media/FileInterface.cpp
create mode 100644 src/kits/media/MediaAddOn.cpp
create mode 100644 src/kits/media/MediaDecoder.cpp
create mode 100644 src/kits/media/MediaDefs.cpp
create mode 100644 src/kits/media/MediaEncoder.cpp
create mode 100644 src/kits/media/MediaEventLooper.cpp
create mode 100644 src/kits/media/MediaFile.cpp
create mode 100644 src/kits/media/MediaFiles.cpp
create mode 100644 src/kits/media/MediaFormats.cpp
create mode 100644 src/kits/media/MediaNode.cpp
create mode 100644 src/kits/media/MediaRoster.cpp
create mode 100644 src/kits/media/MediaTheme.cpp
create mode 100644 src/kits/media/MediaTrack.cpp
create mode 100644 src/kits/media/OldAudioModule.cpp
create mode 100644 src/kits/media/OldAudioModule.h
create mode 100644 src/kits/media/OldAudioStream.cpp
create mode 100644 src/kits/media/OldAudioStream.h
create mode 100644 src/kits/media/OldBufferMsgs.h
create mode 100644 src/kits/media/OldBufferStream.cpp
create mode 100644 src/kits/media/OldBufferStream.h
create mode 100644 src/kits/media/OldBufferStreamManager.cpp
create mode 100644 src/kits/media/OldBufferStreamManager.h
create mode 100644 src/kits/media/OldMediaDefs.h
create mode 100644 src/kits/media/OldMediaKit.h
create mode 100644 src/kits/media/OldMediaModule.cpp
create mode 100644 src/kits/media/OldMediaModule.h
create mode 100644 src/kits/media/OldSoundFile.cpp
create mode 100644 src/kits/media/OldSoundFile.h
create mode 100644 src/kits/media/OldSubscriber.cpp
create mode 100644 src/kits/media/OldSubscriber.h
create mode 100644 src/kits/media/ParameterWeb.cpp
create mode 100644 src/kits/media/PlaySound.cpp
create mode 100644 src/kits/media/PortPool.cpp
create mode 100644 src/kits/media/RealtimeAlloc.cpp
create mode 100644 src/kits/media/SampleConverter.cpp
create mode 100644 src/kits/media/SamplingrateConverter.cpp
create mode 100644 src/kits/media/SharedBufferList.cpp
create mode 100644 src/kits/media/Sound.cpp
create mode 100644 src/kits/media/SoundFile.cpp
create mode 100644 src/kits/media/SoundPlayNode.cpp
create mode 100644 src/kits/media/SoundPlayNode.h
create mode 100644 src/kits/media/SoundPlayer.cpp
create mode 100644 src/kits/media/SystemTimeSource.cpp
create mode 100644 src/kits/media/SystemTimeSource.h
create mode 100644 src/kits/media/TimeCode.cpp
create mode 100644 src/kits/media/TimeSource.cpp
create mode 100644 src/kits/media/TimedEventQueue.cpp
create mode 100644 src/kits/media/TimedEventQueuePrivate.cpp
create mode 100644 src/kits/media/TimedEventQueuePrivate.h
create mode 100644 src/kits/media/TrackReader.cpp
create mode 100644 src/kits/media/TrackReader.h
create mode 100644 src/kits/media/VolumeControl.cpp
create mode 100644 src/kits/midi/Midi.cpp
create mode 100644 src/kits/midi/MidiEvent.cpp
create mode 100644 src/kits/midi/MidiEvent.h
create mode 100644 src/kits/midi/MidiStore.cpp
create mode 100644 src/kits/midi/MidiText.cpp
create mode 100644 src/kits/screensaver/ScreenSaver.cpp
create mode 100644 src/kits/storage/Directory.cpp
create mode 100644 src/kits/storage/Entry.cpp
create mode 100644 src/kits/storage/EntryList.cpp
create mode 100644 src/kits/storage/File.cpp
create mode 100644 src/kits/storage/FindDirectory.cpp
create mode 100644 src/kits/storage/Jamfile
create mode 100644 src/kits/storage/LibBeAdapter.cpp
create mode 100644 src/kits/storage/Mime.cpp
create mode 100644 src/kits/storage/MimeType.cpp
create mode 100644 src/kits/storage/Node.cpp
create mode 100644 src/kits/storage/Node.notes
create mode 100644 src/kits/storage/NodeInfo.cpp
create mode 100644 src/kits/storage/OffsetFile.cpp
create mode 100644 src/kits/storage/Path.cpp
create mode 100644 src/kits/storage/Query.cpp
create mode 100644 src/kits/storage/QueryPredicate.cpp
create mode 100644 src/kits/storage/ResourceFile.cpp
create mode 100644 src/kits/storage/ResourceItem.cpp
create mode 100644 src/kits/storage/ResourceStrings.cpp
create mode 100644 src/kits/storage/Resources.cpp
create mode 100644 src/kits/storage/ResourcesContainer.cpp
create mode 100644 src/kits/storage/Statable.cpp
create mode 100644 src/kits/storage/SymLink.cpp
create mode 100644 src/kits/storage/Volume.cpp
create mode 100644 src/kits/storage/kernel_interface.POSIX.cpp
create mode 100644 src/kits/storage/storage_support.cpp
create mode 100644 src/kits/support/Archivable.cpp
create mode 100644 src/kits/support/ByteOrder.cpp
create mode 100644 src/kits/support/DataIO.cpp
create mode 100644 src/kits/support/Flattenable.cpp
create mode 100644 src/kits/support/Jamfile
create mode 100644 src/kits/support/List.cpp
create mode 100644 src/kits/support/Locker.cpp
create mode 100644 src/kits/support/MallocIO.cpp
create mode 100644 src/kits/support/StopWatch.cpp
create mode 100644 src/kits/support/String.cpp
create mode 100644 src/kits/support/support.src
create mode 100644 src/kits/translation/BitmapStream.cpp
create mode 100644 src/kits/translation/Jamfile
create mode 100644 src/kits/translation/R4xTranslator.cpp
create mode 100644 src/kits/translation/TranslationUtils.cpp
create mode 100644 src/kits/translation/Translator.cpp
create mode 100644 src/kits/translation/TranslatorRoster.cpp
create mode 100644 src/prefs/Jamfile
create mode 100644 src/prefs/appearance/APRMain.cpp
create mode 100644 src/prefs/appearance/APRMain.h
create mode 100644 src/prefs/appearance/APRView.cpp
create mode 100644 src/prefs/appearance/APRView.h
create mode 100644 src/prefs/appearance/APRWindow.cpp
create mode 100644 src/prefs/appearance/APRWindow.h
create mode 100644 src/prefs/appearance/PortLink.cpp
create mode 100644 src/prefs/appearance/PortLink.h
create mode 100644 src/prefs/datatranslations/DataTranslations.cpp
create mode 100644 src/prefs/datatranslations/DataTranslations.h
create mode 100644 src/prefs/datatranslations/DataTranslations.rsrc
create mode 100644 src/prefs/datatranslations/DataTranslationsMessages.h
create mode 100644 src/prefs/datatranslations/DataTranslationsSettings.cpp
create mode 100644 src/prefs/datatranslations/DataTranslationsSettings.h
create mode 100644 src/prefs/datatranslations/DataTranslationsView.cpp
create mode 100644 src/prefs/datatranslations/DataTranslationsView.h
create mode 100644 src/prefs/datatranslations/DataTranslationsWindow.cpp
create mode 100644 src/prefs/datatranslations/DataTranslationsWindow.h
create mode 100644 src/prefs/drivesetup/MainWindow.cpp
create mode 100644 src/prefs/drivesetup/MainWindow.h
create mode 100644 src/prefs/drivesetup/PosSettings.cpp
create mode 100644 src/prefs/drivesetup/PosSettings.h
create mode 100644 src/prefs/drivesetup/Resource.rsrc
create mode 100644 src/prefs/drivesetup/main.cpp
create mode 100644 src/prefs/drivesetup/main.h
create mode 100644 src/prefs/drivesetup/structs.h
create mode 100644 src/prefs/dun/DUN.cpp
create mode 100644 src/prefs/dun/DUN.h
create mode 100644 src/prefs/dun/DUN.rsrc
create mode 100644 src/prefs/dun/DUNView.cpp
create mode 100644 src/prefs/dun/DUNView.h
create mode 100644 src/prefs/dun/DUNWindow.cpp
create mode 100644 src/prefs/dun/DUNWindow.h
create mode 100644 src/prefs/dun/ModemWindow.cpp
create mode 100644 src/prefs/dun/ModemWindow.h
create mode 100644 src/prefs/fonts/.doxygen-conf
create mode 100644 src/prefs/fonts/ButtonView.cpp
create mode 100644 src/prefs/fonts/ButtonView.h
create mode 100644 src/prefs/fonts/CacheView.cpp
create mode 100644 src/prefs/fonts/CacheView.h
create mode 100644 src/prefs/fonts/FontSelectionView.cpp
create mode 100644 src/prefs/fonts/FontSelectionView.h
create mode 100644 src/prefs/fonts/FontView.cpp
create mode 100644 src/prefs/fonts/FontView.h
create mode 100644 src/prefs/fonts/MainWindow.cpp
create mode 100644 src/prefs/fonts/MainWindow.h
create mode 100644 src/prefs/fonts/Resource.rsrc
create mode 100644 src/prefs/fonts/main.cpp
create mode 100644 src/prefs/fonts/main.h
create mode 100644 src/prefs/keyboard/Jamfile
create mode 100644 src/prefs/keyboard/Keyboard.cpp
create mode 100644 src/prefs/keyboard/Keyboard.h
create mode 100644 src/prefs/keyboard/Keyboard.rsrc
create mode 100644 src/prefs/keyboard/KeyboardMessages.h
create mode 100644 src/prefs/keyboard/KeyboardSettings.cpp
create mode 100644 src/prefs/keyboard/KeyboardSettings.h
create mode 100644 src/prefs/keyboard/KeyboardView.cpp
create mode 100644 src/prefs/keyboard/KeyboardView.h
create mode 100644 src/prefs/keyboard/KeyboardWindow.cpp
create mode 100644 src/prefs/keyboard/KeyboardWindow.h
create mode 100644 src/prefs/keymap/KeymapApplication.cpp
create mode 100644 src/prefs/keymap/KeymapApplication.h
create mode 100644 src/prefs/keymap/KeymapListItem.cpp
create mode 100644 src/prefs/keymap/KeymapListItem.h
create mode 100644 src/prefs/keymap/KeymapWindow.cpp
create mode 100644 src/prefs/keymap/KeymapWindow.h
create mode 100644 src/prefs/keymap/main.cpp
create mode 100644 src/prefs/media/MediaPrefsApp.cpp
create mode 100644 src/prefs/media/MediaPrefsApp.h
create mode 100644 src/prefs/media/MediaPrefsSlider.cpp
create mode 100644 src/prefs/media/MediaPrefsSlider.h
create mode 100644 src/prefs/media/MediaPrefsView.cpp
create mode 100644 src/prefs/media/MediaPrefsView.h
create mode 100644 src/prefs/media/MediaPrefsWindow.cpp
create mode 100644 src/prefs/media/MediaPrefsWindow.h
create mode 100644 src/prefs/menu/BitmapMenuItem.cpp
create mode 100644 src/prefs/menu/BitmapMenuItem.h
create mode 100644 src/prefs/menu/ColorPicker.cpp
create mode 100644 src/prefs/menu/ColorWindow.cpp
create mode 100644 src/prefs/menu/FontMenu.cpp
create mode 100644 src/prefs/menu/FontSizeMenu.cpp
create mode 100644 src/prefs/menu/Jamfile
create mode 100644 src/prefs/menu/Menu.rsrc
create mode 100644 src/prefs/menu/MenuApp.cpp
create mode 100644 src/prefs/menu/MenuApp.h
create mode 100644 src/prefs/menu/MenuBar.cpp
create mode 100644 src/prefs/menu/MenuWindow.cpp
create mode 100644 src/prefs/menu/msg.h
create mode 100644 src/prefs/mouse/Jamfile
create mode 100644 src/prefs/mouse/Mouse.cpp
create mode 100644 src/prefs/mouse/Mouse.h
create mode 100644 src/prefs/mouse/Mouse.rsrc
create mode 100644 src/prefs/mouse/MouseMessages.h
create mode 100644 src/prefs/mouse/MouseSettings.cpp
create mode 100644 src/prefs/mouse/MouseSettings.h
create mode 100644 src/prefs/mouse/MouseView.cpp
create mode 100644 src/prefs/mouse/MouseView.h
create mode 100644 src/prefs/mouse/MouseWindow.cpp
create mode 100644 src/prefs/mouse/MouseWindow.h
create mode 100644 src/prefs/print/AddPrinterDialog.h
create mode 100644 src/prefs/print/Globals.cpp
create mode 100644 src/prefs/print/Globals.h
create mode 100644 src/prefs/print/Messages.h
create mode 100644 src/prefs/print/PrinterListView.cpp
create mode 100644 src/prefs/print/PrinterListView.h
create mode 100644 src/prefs/print/Printers.FileTypes.rsrc
create mode 100644 src/prefs/print/Printers.cpp
create mode 100644 src/prefs/print/Printers.h
create mode 100644 src/prefs/print/PrintersWindow.cpp
create mode 100644 src/prefs/print/PrintersWindow.h
create mode 100644 src/prefs/screen/AlertView.cpp
create mode 100644 src/prefs/screen/AlertView.h
create mode 100644 src/prefs/screen/AlertWindow.cpp
create mode 100644 src/prefs/screen/AlertWindow.h
create mode 100644 src/prefs/screen/Bitmaps.h
create mode 100644 src/prefs/screen/Constants.h
create mode 100644 src/prefs/screen/Jamfile
create mode 100644 src/prefs/screen/RefreshSlider.cpp
create mode 100644 src/prefs/screen/RefreshSlider.h
create mode 100644 src/prefs/screen/RefreshView.cpp
create mode 100644 src/prefs/screen/RefreshView.h
create mode 100644 src/prefs/screen/RefreshWindow.cpp
create mode 100644 src/prefs/screen/RefreshWindow.h
create mode 100644 src/prefs/screen/Screen.cpp
create mode 100644 src/prefs/screen/Screen.rsrc
create mode 100644 src/prefs/screen/ScreenApplication.h
create mode 100644 src/prefs/screen/ScreenDrawView.cpp
create mode 100644 src/prefs/screen/ScreenDrawView.h
create mode 100644 src/prefs/screen/ScreenSettings.cpp
create mode 100644 src/prefs/screen/ScreenSettings.h
create mode 100644 src/prefs/screen/ScreenView.cpp
create mode 100644 src/prefs/screen/ScreenView.h
create mode 100644 src/prefs/screen/ScreenWindow.cpp
create mode 100644 src/prefs/screen/ScreenWindow.h
create mode 100644 src/prefs/screensaver/Constants.cpp
create mode 100644 src/prefs/screensaver/Constants.h
create mode 100644 src/prefs/screensaver/MouseAreaView.cpp
create mode 100644 src/prefs/screensaver/MouseAreaView.h
create mode 100644 src/prefs/screensaver/OBOSScreenSaverPreferences.cpp
create mode 100644 src/prefs/screensaver/OBOSScreenSaverPreferences.h
create mode 100644 src/prefs/screensaver/PreviewView.cpp
create mode 100644 src/prefs/screensaver/PreviewView.h
create mode 100644 src/prefs/screensaver/ScreenSaver.cpp
create mode 100644 src/prefs/screensaver/ScreenSaver.h
create mode 100644 src/prefs/screensaver/pwWindow.cpp
create mode 100644 src/prefs/screensaver/pwWindow.h
create mode 100644 src/prefs/translation/Common.h
create mode 100644 src/prefs/translation/DataTranslations.FileTypes.rsrc
create mode 100644 src/prefs/translation/LView.cpp
create mode 100644 src/prefs/translation/LView.h
create mode 100644 src/prefs/translation/datatrans.cpp
create mode 100644 src/prefs/translation/datatrans.h
create mode 100644 src/prefs/translation/transwin.cpp
create mode 100644 src/prefs/translation/transwin.h
create mode 100644 src/prefs/virtualmemory/.doxygen-conf
create mode 100644 src/prefs/virtualmemory/MainWindow.cpp
create mode 100644 src/prefs/virtualmemory/MainWindow.h
create mode 100644 src/prefs/virtualmemory/Resource.rsrc
create mode 100644 src/prefs/virtualmemory/VMSettings.cpp
create mode 100644 src/prefs/virtualmemory/VMSettings.h
create mode 100644 src/prefs/virtualmemory/main.cpp
create mode 100644 src/prefs/virtualmemory/main.h
create mode 100644 src/prefs/workspaces/Jamfile
create mode 100644 src/prefs/workspaces/Workspaces.cpp
create mode 100644 src/prefs/workspaces/Workspaces.rsrc
create mode 100644 src/servers/app/proto1/AppServer.cpp
create mode 100644 src/servers/app/proto1/AppServer.h
create mode 100644 src/servers/app/proto1/Desktop.cpp
create mode 100644 src/servers/app/proto1/Desktop.h
create mode 100644 src/servers/app/proto1/DirectDriver.cpp
create mode 100644 src/servers/app/proto1/DirectDriver.h
create mode 100644 src/servers/app/proto1/DisplayDriver.cpp
create mode 100644 src/servers/app/proto1/DisplayDriver.h
create mode 100644 src/servers/app/proto1/Globals.h
create mode 100644 src/servers/app/proto1/GraphicsHooks.cc
create mode 100644 src/servers/app/proto1/GraphicsHooks.h
create mode 100644 src/servers/app/proto1/Layer.cpp
create mode 100644 src/servers/app/proto1/Layer.h
create mode 100644 src/servers/app/proto1/ServerBitmap.cpp
create mode 100644 src/servers/app/proto1/ServerBitmap.h
create mode 100644 src/servers/app/proto1/ServerWindow.cpp
create mode 100644 src/servers/app/proto1/ServerWindow.h
create mode 100644 src/servers/app/proto2/AppServer.cpp
create mode 100644 src/servers/app/proto2/AppServer.h
create mode 100644 src/servers/app/proto2/PortLink.cpp
create mode 100644 src/servers/app/proto2/PortLink.h
create mode 100644 src/servers/app/proto2/README
create mode 100644 src/servers/app/proto2/ServerApp.cpp
create mode 100644 src/servers/app/proto2/ServerApp.h
create mode 100644 src/servers/app/proto2/ServerProtocol.h
create mode 100644 src/servers/app/proto2/obhey/obhey.c
create mode 100644 src/servers/app/proto2/obtestapp/OBApp.cpp
create mode 100644 src/servers/app/proto2/obtestapp/PortLink.cpp
create mode 100644 src/servers/app/proto2/obtestapp/PortLink.h
create mode 100644 src/servers/app/proto2/obtestapp/ServerProtocol.h
create mode 100644 src/servers/app/proto3/AppServer.cpp
create mode 100644 src/servers/app/proto3/AppServer.h
create mode 100644 src/servers/app/proto3/DebugTools.cpp
create mode 100644 src/servers/app/proto3/DebugTools.h
create mode 100644 src/servers/app/proto3/Desktop.cpp
create mode 100644 src/servers/app/proto3/Desktop.h
create mode 100644 src/servers/app/proto3/DirectDriver.cpp
create mode 100644 src/servers/app/proto3/DirectDriver.h
create mode 100644 src/servers/app/proto3/DisplayDriver.cpp
create mode 100644 src/servers/app/proto3/DisplayDriver.h
create mode 100644 src/servers/app/proto3/Globals.h
create mode 100644 src/servers/app/proto3/Layer.cpp
create mode 100644 src/servers/app/proto3/Layer.h
create mode 100644 src/servers/app/proto3/PortLink.cpp
create mode 100644 src/servers/app/proto3/PortLink.h
create mode 100644 src/servers/app/proto3/README
create mode 100644 src/servers/app/proto3/ServerApp.cpp
create mode 100644 src/servers/app/proto3/ServerApp.h
create mode 100644 src/servers/app/proto3/ServerBitmap.cpp
create mode 100644 src/servers/app/proto3/ServerBitmap.h
create mode 100644 src/servers/app/proto3/ServerCursor.cpp
create mode 100644 src/servers/app/proto3/ServerCursor.h
create mode 100644 src/servers/app/proto3/ServerProtocol.h
create mode 100644 src/servers/app/proto3/ServerRect.h
create mode 100644 src/servers/app/proto3/ServerRegion.h
create mode 100644 src/servers/app/proto3/ServerSprite.cpp
create mode 100644 src/servers/app/proto3/ServerWindow.cpp
create mode 100644 src/servers/app/proto3/ServerWindow.h
create mode 100644 src/servers/app/proto3/SystemPalette.cpp
create mode 100644 src/servers/app/proto3/SystemPalette.h
create mode 100644 src/servers/app/proto3/ViewDriver.cpp
create mode 100644 src/servers/app/proto3/ViewDriver.h
create mode 100644 src/servers/app/proto4/AppServer.cpp
create mode 100644 src/servers/app/proto4/AppServer.h
create mode 100644 src/servers/app/proto4/BUGS
create mode 100644 src/servers/app/proto4/CHANGES
create mode 100644 src/servers/app/proto4/DebugTools.cpp
create mode 100644 src/servers/app/proto4/DebugTools.h
create mode 100644 src/servers/app/proto4/Desktop.cpp
create mode 100644 src/servers/app/proto4/Desktop.h
create mode 100644 src/servers/app/proto4/DirectDriver.cpp
create mode 100644 src/servers/app/proto4/DirectDriver.h
create mode 100644 src/servers/app/proto4/DisplayDriver.cpp
create mode 100644 src/servers/app/proto4/DisplayDriver.h
create mode 100644 src/servers/app/proto4/Globals.h
create mode 100644 src/servers/app/proto4/Layer.cpp
create mode 100644 src/servers/app/proto4/Layer.h
create mode 100644 src/servers/app/proto4/PortLink.cpp
create mode 100644 src/servers/app/proto4/PortLink.h
create mode 100644 src/servers/app/proto4/README
create mode 100644 src/servers/app/proto4/ServerApp.cpp
create mode 100644 src/servers/app/proto4/ServerApp.h
create mode 100644 src/servers/app/proto4/ServerBitmap.cpp
create mode 100644 src/servers/app/proto4/ServerBitmap.h
create mode 100644 src/servers/app/proto4/ServerCursor.cpp
create mode 100644 src/servers/app/proto4/ServerCursor.h
create mode 100644 src/servers/app/proto4/ServerProtocol.h
create mode 100644 src/servers/app/proto4/ServerSprite.cpp
create mode 100644 src/servers/app/proto4/ServerWindow.cpp
create mode 100644 src/servers/app/proto4/ServerWindow.h
create mode 100644 src/servers/app/proto4/SystemPalette.cpp
create mode 100644 src/servers/app/proto4/SystemPalette.h
create mode 100644 src/servers/app/proto4/ViewDriver.cpp
create mode 100644 src/servers/app/proto4/ViewDriver.h
create mode 100644 src/servers/app/proto4/main.cpp
create mode 100644 src/servers/app/proto4/obhey/obhey.c
create mode 100644 src/servers/app/proto4/obtestapp/OBApp.cpp
create mode 100644 src/servers/app/proto4/obtestapp/OBApp.h
create mode 100644 src/servers/app/proto4/obtestapp/PortLink.cpp
create mode 100644 src/servers/app/proto4/obtestapp/PortLink.h
create mode 100644 src/servers/app/proto4/obtestapp/ServerProtocol.h
create mode 100644 src/servers/app/proto4/obtestapp/TestBitmap.cpp
create mode 100644 src/servers/app/proto4/obtestapp/TestBitmap.h
create mode 100644 src/servers/app/proto5/AppServer.cpp
create mode 100644 src/servers/app/proto5/AppServer.h
create mode 100644 src/servers/app/proto5/BUGS
create mode 100644 src/servers/app/proto5/BeDecorator.cpp
create mode 100644 src/servers/app/proto5/BeDecorator.h
create mode 100644 src/servers/app/proto5/DebugTools.cpp
create mode 100644 src/servers/app/proto5/DebugTools.h
create mode 100644 src/servers/app/proto5/Decorator.cpp
create mode 100644 src/servers/app/proto5/Decorator.h
create mode 100644 src/servers/app/proto5/Desktop.cpp
create mode 100644 src/servers/app/proto5/Desktop.h
create mode 100644 src/servers/app/proto5/DisplayDriver.cpp
create mode 100644 src/servers/app/proto5/DisplayDriver.h
create mode 100644 src/servers/app/proto5/Globals.h
create mode 100644 src/servers/app/proto5/Layer.cpp
create mode 100644 src/servers/app/proto5/Layer.h
create mode 100644 src/servers/app/proto5/PortLink.cpp
create mode 100644 src/servers/app/proto5/PortLink.h
create mode 100644 src/servers/app/proto5/SecondDriver.cpp
create mode 100644 src/servers/app/proto5/SecondDriver.h
create mode 100644 src/servers/app/proto5/SecondDriverHelper.h
create mode 100644 src/servers/app/proto5/ServerApp.cpp
create mode 100644 src/servers/app/proto5/ServerApp.h
create mode 100644 src/servers/app/proto5/ServerBitmap.cpp
create mode 100644 src/servers/app/proto5/ServerBitmap.h
create mode 100644 src/servers/app/proto5/ServerCursor.cpp
create mode 100644 src/servers/app/proto5/ServerCursor.h
create mode 100644 src/servers/app/proto5/ServerProtocol.h
create mode 100644 src/servers/app/proto5/ServerSprite.cpp
create mode 100644 src/servers/app/proto5/ServerWindow.cpp
create mode 100644 src/servers/app/proto5/ServerWindow.h
create mode 100644 src/servers/app/proto5/SystemPalette.cpp
create mode 100644 src/servers/app/proto5/SystemPalette.h
create mode 100644 src/servers/app/proto5/TODO
create mode 100644 src/servers/app/proto5/ViewDriver.cpp
create mode 100644 src/servers/app/proto5/ViewDriver.h
create mode 100644 src/servers/app/proto5/WindowBorder.cpp
create mode 100644 src/servers/app/proto5/WindowBorder.h
create mode 100644 src/servers/app/proto5/YMakDecorator.cpp
create mode 100644 src/servers/app/proto5/YMakDecorator.h
create mode 100644 src/servers/app/proto5/main.cpp
create mode 100644 src/servers/app/proto5/obhey/obhey.c
create mode 100644 src/servers/app/proto5/router/router.cpp
create mode 100644 src/servers/app/proto5/router/router.h
create mode 100644 src/servers/app/proto5/testobapp/BUGS
create mode 100644 src/servers/app/proto5/testobapp/CHANGES
create mode 100644 src/servers/app/proto5/testobapp/DebugTools.cpp
create mode 100644 src/servers/app/proto5/testobapp/DebugTools.h
create mode 100644 src/servers/app/proto5/testobapp/OBApplication.cpp
create mode 100644 src/servers/app/proto5/testobapp/OBApplication.h
create mode 100644 src/servers/app/proto5/testobapp/OBTestApp.cpp
create mode 100644 src/servers/app/proto5/testobapp/OBView.cpp
create mode 100644 src/servers/app/proto5/testobapp/OBView.h
create mode 100644 src/servers/app/proto5/testobapp/OBWindow.cpp
create mode 100644 src/servers/app/proto5/testobapp/OBWindow.h
create mode 100644 src/servers/app/proto5/testobapp/PortLink.cpp
create mode 100644 src/servers/app/proto5/testobapp/PortLink.h
create mode 100644 src/servers/app/proto5/testobapp/ServerProtocol.h
create mode 100644 src/servers/app/proto5/testobapp/TODO
create mode 100644 src/servers/app/proto6/AppServer.cpp
create mode 100644 src/servers/app/proto6/AppServer.h
create mode 100644 src/servers/app/proto6/BeDecorator.cpp
create mode 100644 src/servers/app/proto6/BeDecorator.h
create mode 100644 src/servers/app/proto6/ColorUtils.cc
create mode 100644 src/servers/app/proto6/ColorUtils.h
create mode 100644 src/servers/app/proto6/DebugTools.cpp
create mode 100644 src/servers/app/proto6/DebugTools.h
create mode 100644 src/servers/app/proto6/Decorator.cpp
create mode 100644 src/servers/app/proto6/Decorator.h
create mode 100644 src/servers/app/proto6/Desktop.cpp
create mode 100644 src/servers/app/proto6/Desktop.h
create mode 100644 src/servers/app/proto6/DisplayDriver.cpp
create mode 100644 src/servers/app/proto6/DisplayDriver.h
create mode 100644 src/servers/app/proto6/Globals.h
create mode 100644 src/servers/app/proto6/Layer.cpp
create mode 100644 src/servers/app/proto6/Layer.h
create mode 100644 src/servers/app/proto6/PortLink.cpp
create mode 100644 src/servers/app/proto6/PortLink.h
create mode 100644 src/servers/app/proto6/ScreenDriver.cpp
create mode 100644 src/servers/app/proto6/ScreenDriver.h
create mode 100644 src/servers/app/proto6/SecondDriver.cpp
create mode 100644 src/servers/app/proto6/SecondDriver.h
create mode 100644 src/servers/app/proto6/SecondDriverHelper.h
create mode 100644 src/servers/app/proto6/ServerApp.cpp
create mode 100644 src/servers/app/proto6/ServerApp.h
create mode 100644 src/servers/app/proto6/ServerBitmap.cpp
create mode 100644 src/servers/app/proto6/ServerBitmap.h
create mode 100644 src/servers/app/proto6/ServerCursor.cpp
create mode 100644 src/servers/app/proto6/ServerCursor.h
create mode 100644 src/servers/app/proto6/ServerProtocol.h
create mode 100644 src/servers/app/proto6/ServerWindow.cpp
create mode 100644 src/servers/app/proto6/ServerWindow.h
create mode 100644 src/servers/app/proto6/SystemPalette.cpp
create mode 100644 src/servers/app/proto6/SystemPalette.h
create mode 100644 src/servers/app/proto6/ViewDriver.cpp
create mode 100644 src/servers/app/proto6/ViewDriver.h
create mode 100644 src/servers/app/proto6/WinDecorator.cpp
create mode 100644 src/servers/app/proto6/WinDecorator.h
create mode 100644 src/servers/app/proto6/WindowBorder.cpp
create mode 100644 src/servers/app/proto6/WindowBorder.h
create mode 100644 src/servers/app/proto6/YMakDecorator.cpp
create mode 100644 src/servers/app/proto6/YMakDecorator.h
create mode 100644 src/servers/app/proto6/driverharness/AppServer.cpp
create mode 100644 src/servers/app/proto6/driverharness/AppServer.h
create mode 100644 src/servers/app/proto6/driverharness/ColorUtils.cc
create mode 100644 src/servers/app/proto6/driverharness/ColorUtils.h
create mode 100644 src/servers/app/proto6/driverharness/DHApp.cpp
create mode 100644 src/servers/app/proto6/driverharness/DHApp.h
create mode 100644 src/servers/app/proto6/driverharness/DHServerBitmap.cpp
create mode 100644 src/servers/app/proto6/driverharness/DebugTools.cpp
create mode 100644 src/servers/app/proto6/driverharness/DebugTools.h
create mode 100644 src/servers/app/proto6/driverharness/Desktop.h
create mode 100644 src/servers/app/proto6/driverharness/DirectDriver.cpp
create mode 100644 src/servers/app/proto6/driverharness/DirectDriver.h
create mode 100644 src/servers/app/proto6/driverharness/DisplayDriver.cpp
create mode 100644 src/servers/app/proto6/driverharness/DisplayDriver.h
create mode 100644 src/servers/app/proto6/driverharness/PortLink.cpp
create mode 100644 src/servers/app/proto6/driverharness/PortLink.h
create mode 100644 src/servers/app/proto6/driverharness/ScreenDriver.cpp
create mode 100644 src/servers/app/proto6/driverharness/ScreenDriver.h
create mode 100644 src/servers/app/proto6/driverharness/SecondDriver.cpp
create mode 100644 src/servers/app/proto6/driverharness/SecondDriver.h
create mode 100644 src/servers/app/proto6/driverharness/SecondDriverHelper.h
create mode 100644 src/servers/app/proto6/driverharness/ServerBitmap.h
create mode 100644 src/servers/app/proto6/driverharness/ServerCursor.cpp
create mode 100644 src/servers/app/proto6/driverharness/ServerCursor.h
create mode 100644 src/servers/app/proto6/driverharness/ServerProtocol.h
create mode 100644 src/servers/app/proto6/driverharness/SystemPalette.cpp
create mode 100644 src/servers/app/proto6/driverharness/SystemPalette.h
create mode 100644 src/servers/app/proto6/driverharness/ViewDriver.cpp
create mode 100644 src/servers/app/proto6/driverharness/ViewDriver.h
create mode 100644 src/servers/app/proto6/router/router.cpp
create mode 100644 src/servers/app/proto6/router/router.h
create mode 100644 src/servers/app/proto6/testobapp/DebugTools.cpp
create mode 100644 src/servers/app/proto6/testobapp/DebugTools.h
create mode 100644 src/servers/app/proto6/testobapp/OBApplication.cpp
create mode 100644 src/servers/app/proto6/testobapp/OBApplication.h
create mode 100644 src/servers/app/proto6/testobapp/OBTestApp.cpp
create mode 100644 src/servers/app/proto6/testobapp/OBView.cpp
create mode 100644 src/servers/app/proto6/testobapp/OBView.h
create mode 100644 src/servers/app/proto6/testobapp/OBWindow.cpp
create mode 100644 src/servers/app/proto6/testobapp/OBWindow.h
create mode 100644 src/servers/app/proto6/testobapp/PortLink.cpp
create mode 100644 src/servers/app/proto6/testobapp/PortLink.h
create mode 100644 src/servers/app/proto6/testobapp/ServerProtocol.h
create mode 100644 src/servers/input/InputServer.FileTypes.rsrc
create mode 100644 src/servers/input/InputServer.cpp
create mode 100644 src/servers/input/InputServer.h
create mode 100644 src/servers/input/InputServerDevice.cpp
create mode 100644 src/servers/input/InputServerDeviceListEntry.h
create mode 100644 src/servers/input/InputServerFilter.cpp
create mode 100644 src/servers/input/InputServerMethod.cpp
create mode 100644 src/servers/input/InputServerTypes.h
create mode 100644 src/servers/media/AppManager.cpp
create mode 100644 src/servers/media/AppManager.h
create mode 100644 src/servers/media/BufferManager.cpp
create mode 100644 src/servers/media/BufferManager.h
create mode 100644 src/servers/media/NodeManager.cpp
create mode 100644 src/servers/media/NodeManager.h
create mode 100644 src/servers/media/ServerInterface.h
create mode 100644 src/servers/media/debug.h
create mode 100644 src/servers/media/media_server.cpp
create mode 100644 src/servers/media_addon/main.cpp
create mode 100644 src/servers/print/BeUtils.cpp
create mode 100644 src/servers/print/BeUtils.h
create mode 100644 src/servers/print/PrintServer.FileTypes.rsrc
create mode 100644 src/servers/print/PrintServerApp.R5.cpp
create mode 100644 src/servers/print/PrintServerApp.Scripting.cpp
create mode 100644 src/servers/print/PrintServerApp.cpp
create mode 100644 src/servers/print/PrintServerApp.h
create mode 100644 src/servers/print/Printer.Scripting.cpp
create mode 100644 src/servers/print/Printer.cpp
create mode 100644 src/servers/print/Printer.h
create mode 100644 src/servers/screensaver/SSAwindow.cpp
create mode 100644 src/servers/screensaver/SSAwindow.h
create mode 100644 src/servers/screensaver/SSthread.cpp
create mode 100755 src/servers/screensaver/ScreenSaverApp.cpp
create mode 100755 src/servers/screensaver/ScreenSaverApp.h
create mode 100644 src/tests/Jamfile
create mode 100644 src/tests/add-ons/kernel/file_systems/befs/array/array.cpp
create mode 100644 src/tests/add-ons/kernel/file_systems/befs/array/smallArray.cpp
create mode 100644 src/tests/add-ons/kernel/file_systems/befs/btree/Inode.cpp
create mode 100644 src/tests/add-ons/kernel/file_systems/befs/btree/Inode.h
create mode 100644 src/tests/add-ons/kernel/file_systems/befs/btree/Journal.h
create mode 100644 src/tests/add-ons/kernel/file_systems/befs/btree/Volume.cpp
create mode 100644 src/tests/add-ons/kernel/file_systems/befs/btree/Volume.h
create mode 100644 src/tests/add-ons/kernel/file_systems/befs/btree/cache.cpp
create mode 100644 src/tests/add-ons/kernel/file_systems/befs/btree/cache.h
create mode 100644 src/tests/add-ons/kernel/file_systems/befs/btree/cpp.h
create mode 100644 src/tests/add-ons/kernel/file_systems/befs/btree/test.cpp
create mode 100644 src/tests/add-ons/kernel/file_systems/befs/queries/test.cpp
create mode 100644 src/tests/add-ons/kernel/file_systems/befs/randomread/randomread.cpp
create mode 100644 src/tests/add-ons/kernel/file_systems/befs/rename/rename.c
create mode 100644 src/tests/add-ons/print/pdf/Bookmarks.zip
create mode 100644 src/tests/add-ons/print/pdf/bezierbounds/Application.cpp
create mode 100644 src/tests/add-ons/print/pdf/bezierbounds/Application.h
create mode 100644 src/tests/add-ons/print/pdf/bezierbounds/Application.rsrc
create mode 100644 src/tests/add-ons/print/pdf/bezierbounds/BezierBounds.cpp
create mode 100644 src/tests/add-ons/print/pdf/bezierbounds/BezierBounds.h
create mode 100644 src/tests/add-ons/print/pdf/bezierbounds/BezierBounds.txt
create mode 100644 src/tests/add-ons/print/pdf/bezierbounds/MsgConsts.h
create mode 100644 src/tests/add-ons/print/pdf/bezierbounds/View.cpp
create mode 100644 src/tests/add-ons/print/pdf/bezierbounds/View.h
create mode 100644 src/tests/add-ons/print/pdf/linepathbuilder/Application.cpp
create mode 100644 src/tests/add-ons/print/pdf/linepathbuilder/Application.h
create mode 100644 src/tests/add-ons/print/pdf/linepathbuilder/Application.rsrc
create mode 100644 src/tests/add-ons/print/pdf/linepathbuilder/LinePathBuilder.txt
create mode 100644 src/tests/add-ons/print/pdf/linepathbuilder/MsgConsts.h
create mode 100644 src/tests/add-ons/print/pdf/linepathbuilder/View.cpp
create mode 100644 src/tests/add-ons/print/pdf/linepathbuilder/View.h
create mode 100644 src/tests/kits/Jamfile
create mode 100644 src/tests/kits/app/Jamfile
create mode 100644 src/tests/kits/app/bhandler/AddFilterTest.cpp
create mode 100644 src/tests/kits/app/bhandler/AddFilterTest.h
create mode 100644 src/tests/kits/app/bhandler/BHandlerCases
create mode 100644 src/tests/kits/app/bhandler/BHandlerTester.cpp
create mode 100644 src/tests/kits/app/bhandler/BHandlerTester.h
create mode 100644 src/tests/kits/app/bhandler/IsWatchedTest.cpp
create mode 100644 src/tests/kits/app/bhandler/IsWatchedTest.h
create mode 100644 src/tests/kits/app/bhandler/Jamfile
create mode 100644 src/tests/kits/app/bhandler/LockLooperTest.cpp
create mode 100644 src/tests/kits/app/bhandler/LockLooperTest.h
create mode 100644 src/tests/kits/app/bhandler/LockLooperTestCommon.cpp
create mode 100644 src/tests/kits/app/bhandler/LockLooperTestCommon.h
create mode 100644 src/tests/kits/app/bhandler/LockLooperWithTimeoutTest.cpp
create mode 100644 src/tests/kits/app/bhandler/LockLooperWithTimeoutTest.h
create mode 100644 src/tests/kits/app/bhandler/LooperTest.cpp
create mode 100644 src/tests/kits/app/bhandler/LooperTest.h
create mode 100644 src/tests/kits/app/bhandler/NextHandlerTest.cpp
create mode 100644 src/tests/kits/app/bhandler/NextHandlerTest.h
create mode 100644 src/tests/kits/app/bhandler/RemoveFilterTest.cpp
create mode 100644 src/tests/kits/app/bhandler/RemoveFilterTest.h
create mode 100644 src/tests/kits/app/bhandler/SetFilterListTest.cpp
create mode 100644 src/tests/kits/app/bhandler/SetFilterListTest.h
create mode 100644 src/tests/kits/app/bhandler/SetNextHandlerTest.cpp
create mode 100644 src/tests/kits/app/bhandler/SetNextHandlerTest.h
create mode 100644 src/tests/kits/app/bhandler/UnlockLooperTest.cpp
create mode 100644 src/tests/kits/app/bhandler/UnlockLooperTest.h
create mode 100644 src/tests/kits/app/bhandler/main.cpp
create mode 100644 src/tests/kits/app/blooper/BLooperCases
create mode 100644 src/tests/kits/app/blooper/IsMessageWaitingTest.cpp
create mode 100644 src/tests/kits/app/blooper/IsMessageWaitingTest.h
create mode 100644 src/tests/kits/app/blooper/Jamfile
create mode 100644 src/tests/kits/app/blooper/RemoveHandlerTest.cpp
create mode 100644 src/tests/kits/app/blooper/RemoveHandlerTest.h
create mode 100644 src/tests/kits/app/blooper/main.cpp
create mode 100644 src/tests/kits/app/bmessagequeue/AddMessageTest1.cpp
create mode 100644 src/tests/kits/app/bmessagequeue/AddMessageTest1.h
create mode 100644 src/tests/kits/app/bmessagequeue/AddMessageTest2.cpp
create mode 100644 src/tests/kits/app/bmessagequeue/AddMessageTest2.h
create mode 100644 src/tests/kits/app/bmessagequeue/ConcurrencyTest1.cpp
create mode 100644 src/tests/kits/app/bmessagequeue/ConcurrencyTest1.h
create mode 100644 src/tests/kits/app/bmessagequeue/ConcurrencyTest2.cpp
create mode 100644 src/tests/kits/app/bmessagequeue/ConcurrencyTest2.h
create mode 100644 src/tests/kits/app/bmessagequeue/FindMessageTest1.cpp
create mode 100644 src/tests/kits/app/bmessagequeue/FindMessageTest1.h
create mode 100644 src/tests/kits/app/bmessagequeue/Jamfile
create mode 100644 src/tests/kits/app/bmessagequeue/MessageQueueTestAddon.cpp
create mode 100644 src/tests/kits/app/bmessagequeue/MessageQueueTestCase.cpp
create mode 100644 src/tests/kits/app/bmessagequeue/MessageQueueTestCase.h
create mode 100644 src/tests/kits/app/bmessenger/BMessengerCases
create mode 100644 src/tests/kits/app/bmessenger/BMessengerTester.cpp
create mode 100644 src/tests/kits/app/bmessenger/BMessengerTester.h
create mode 100644 src/tests/kits/app/bmessenger/Helpers.h
create mode 100644 src/tests/kits/app/bmessenger/Jamfile
create mode 100644 src/tests/kits/app/bmessenger/TargetTester.cpp
create mode 100644 src/tests/kits/app/bmessenger/TargetTester.h
create mode 100644 src/tests/kits/app/bmessenger/main.cpp
create mode 100644 src/tests/kits/app/common.h
create mode 100644 src/tests/kits/interface/bprintjob/PrintTestApp.cpp
create mode 100644 src/tests/kits/interface/bprintjob/PrintTestApp.hpp
create mode 100644 src/tests/kits/interface/bprintjob/PrintTestView.cpp
create mode 100644 src/tests/kits/interface/bprintjob/PrintTestView.hpp
create mode 100644 src/tests/kits/interface/bprintjob/PrintTestWindow.cpp
create mode 100644 src/tests/kits/interface/bprintjob/PrintTestWindow.hpp
create mode 100644 src/tests/kits/media/AreaTest.cpp
create mode 100644 src/tests/kits/media/BufferTest.cpp
create mode 100644 src/tests/kits/media/SizeofTest.cpp
create mode 100644 src/tests/kits/media/TimedEventQueueTest.cpp
create mode 100644 src/tests/kits/media/nodetest/ConsumerNode.cpp
create mode 100644 src/tests/kits/media/nodetest/ConsumerNode.h
create mode 100644 src/tests/kits/media/nodetest/ProducerNode.cpp
create mode 100644 src/tests/kits/media/nodetest/ProducerNode.h
create mode 100644 src/tests/kits/media/nodetest/main.cpp
create mode 100644 src/tests/kits/media/nodetest/misc.cpp
create mode 100644 src/tests/kits/media/nodetest/misc.h
create mode 100644 src/tests/kits/midi/midi_player/Midi1To2Bridge.cpp
create mode 100644 src/tests/kits/midi/midi_player/Midi1To2Bridge.h
create mode 100644 src/tests/kits/midi/midi_player/MidiDelay.cpp
create mode 100644 src/tests/kits/midi/midi_player/MidiDelay.h
create mode 100644 src/tests/kits/midi/midi_player/MidiPlayer.cpp
create mode 100644 src/tests/kits/midi/midi_player_replacement/Activity.cpp
create mode 100644 src/tests/kits/midi/midi_player_replacement/Activity.h
create mode 100644 src/tests/kits/midi/midi_player_replacement/MidiDelay.cpp
create mode 100644 src/tests/kits/midi/midi_player_replacement/MidiDelay.h
create mode 100644 src/tests/kits/midi/midi_player_replacement/MidiMeter.cpp
create mode 100644 src/tests/kits/midi/midi_player_replacement/MidiPlayer.rsrc
create mode 100644 src/tests/kits/midi/midi_player_replacement/MidiPlayerView.cpp
create mode 100644 src/tests/kits/midi/midi_player_replacement/MidiPlayerView.h
create mode 100644 src/tests/kits/midi/midi_player_replacement/MidiPlayerWindow.cpp
create mode 100644 src/tests/kits/midi/midi_player_replacement/MidiPlayerWindow.h
create mode 100644 src/tests/kits/midi/midi_player_replacement/Scope.cpp
create mode 100644 src/tests/kits/midi/midi_player_replacement/Scope.h
create mode 100644 src/tests/kits/midi/synth_file_reader/SynthFileFormat.txt
create mode 100644 src/tests/kits/midi/synth_file_reader/SynthFileReader.cpp
create mode 100644 src/tests/kits/midi/synth_file_reader/SynthFileReader.h
create mode 100644 src/tests/kits/midi/synth_file_reader/main.cpp
create mode 100644 src/tests/kits/midi/test1.cpp
create mode 100644 src/tests/kits/net/at_client.c
create mode 100644 src/tests/kits/net/at_srv.c
create mode 100644 src/tests/kits/net/select_test.c
create mode 100644 src/tests/kits/net/select_test2.c
create mode 100644 src/tests/kits/net/select_test_big.c
create mode 100644 src/tests/kits/net/stop_stack.c
create mode 100644 src/tests/kits/net/tcp_test.c
create mode 100644 src/tests/kits/net/test1.c
create mode 100644 src/tests/kits/net/test2.c
create mode 100644 src/tests/kits/net/test3.c
create mode 100644 src/tests/kits/net/ufunc.c
create mode 100644 src/tests/kits/net/ufunc.h
create mode 100644 src/tests/kits/storage/BasicTest.cpp
create mode 100644 src/tests/kits/storage/BasicTest.h
create mode 100644 src/tests/kits/storage/DirectoryTest.cpp
create mode 100644 src/tests/kits/storage/DirectoryTest.h
create mode 100644 src/tests/kits/storage/EntryTest.cpp
create mode 100644 src/tests/kits/storage/EntryTest.h
create mode 100644 src/tests/kits/storage/FileTest.cpp
create mode 100644 src/tests/kits/storage/FileTest.h
create mode 100644 src/tests/kits/storage/FindDirectoryTest.cpp
create mode 100644 src/tests/kits/storage/FindDirectoryTest.h
create mode 100644 src/tests/kits/storage/Jamfile
create mode 100644 src/tests/kits/storage/MimeTypeTest.cpp
create mode 100644 src/tests/kits/storage/MimeTypeTest.h
create mode 100644 src/tests/kits/storage/NodeTest.cpp
create mode 100644 src/tests/kits/storage/NodeTest.h
create mode 100644 src/tests/kits/storage/PathTest.cpp
create mode 100644 src/tests/kits/storage/PathTest.h
create mode 100644 src/tests/kits/storage/QueryTest.cpp
create mode 100644 src/tests/kits/storage/QueryTest.h
create mode 100644 src/tests/kits/storage/ResourceStringsTest.cpp
create mode 100644 src/tests/kits/storage/ResourceStringsTest.h
create mode 100644 src/tests/kits/storage/ResourcesTest.cpp
create mode 100644 src/tests/kits/storage/ResourcesTest.h
create mode 100644 src/tests/kits/storage/StatableTest.cpp
create mode 100644 src/tests/kits/storage/StatableTest.h
create mode 100644 src/tests/kits/storage/SymLinkTest.cpp
create mode 100644 src/tests/kits/storage/SymLinkTest.h
create mode 100644 src/tests/kits/storage/Test.StorageKit.cpp
create mode 100644 src/tests/kits/storage/Test.StorageKit.h
create mode 100644 src/tests/kits/storage/TestApp.cpp
create mode 100644 src/tests/kits/storage/TestApp.h
create mode 100644 src/tests/kits/storage/TestUtils.cpp
create mode 100644 src/tests/kits/storage/TestUtils.h
create mode 100755 src/tests/kits/storage/resources/elf
create mode 100755 src/tests/kits/storage/resources/elf-no-res
create mode 100644 src/tests/kits/storage/resources/pef
create mode 100644 src/tests/kits/storage/resources/pef-no-res
create mode 100644 src/tests/kits/storage/resources/ppc.rsrc
create mode 100644 src/tests/kits/storage/resources/x86.rsrc
create mode 100644 src/tests/kits/support/barchivable/BArchivableTester.cpp
create mode 100644 src/tests/kits/support/barchivable/BArchivableTester.h
create mode 100644 src/tests/kits/support/barchivable/FindInstantiationFuncTester.cpp
create mode 100644 src/tests/kits/support/barchivable/FindInstantiationFuncTester.h
create mode 100644 src/tests/kits/support/barchivable/InstantiateObjectTester.cpp
create mode 100644 src/tests/kits/support/barchivable/InstantiateObjectTester.h
create mode 100644 src/tests/kits/support/barchivable/LocalCommon.h
create mode 100644 src/tests/kits/support/barchivable/LocalTestObject.cpp
create mode 100644 src/tests/kits/support/barchivable/LocalTestObject.h
create mode 100644 src/tests/kits/support/barchivable/ValidateInstantiationTester.cpp
create mode 100644 src/tests/kits/support/barchivable/ValidateInstantiationTester.h
create mode 100644 src/tests/kits/support/barchivable/main.cpp
create mode 100644 src/tests/kits/support/barchivable/remoteobjectdef/RemoteTestObject.cpp
create mode 100644 src/tests/kits/support/barchivable/remoteobjectdef/RemoteTestObject.h
create mode 100644 src/tests/kits/support/barchivable/remoteobjectdef/Resource.rsrc
create mode 100644 src/tests/kits/support/bautolock/AutolockLockerTest.cpp
create mode 100644 src/tests/kits/support/bautolock/AutolockLockerTest.h
create mode 100644 src/tests/kits/support/bautolock/AutolockLooperTest.cpp
create mode 100644 src/tests/kits/support/bautolock/AutolockLooperTest.h
create mode 100644 src/tests/kits/support/bautolock/AutolockTestAddon.cpp
create mode 100644 src/tests/kits/support/blocker/BenaphoreLockCountTest1.cpp
create mode 100644 src/tests/kits/support/blocker/BenaphoreLockCountTest1.h
create mode 100644 src/tests/kits/support/blocker/ConcurrencyTest1.cpp
create mode 100644 src/tests/kits/support/blocker/ConcurrencyTest1.h
create mode 100644 src/tests/kits/support/blocker/ConcurrencyTest2.cpp
create mode 100644 src/tests/kits/support/blocker/ConcurrencyTest2.h
create mode 100644 src/tests/kits/support/blocker/ConstructionTest1.cpp
create mode 100644 src/tests/kits/support/blocker/ConstructionTest1.h
create mode 100644 src/tests/kits/support/blocker/DestructionTest1.cpp
create mode 100644 src/tests/kits/support/blocker/DestructionTest1.h
create mode 100644 src/tests/kits/support/blocker/DestructionTest2.cpp
create mode 100644 src/tests/kits/support/blocker/DestructionTest2.h
create mode 100644 src/tests/kits/support/blocker/LockerTestAddon.cpp
create mode 100644 src/tests/kits/support/blocker/LockerTestCase.cpp
create mode 100644 src/tests/kits/support/blocker/LockerTestCase.h
create mode 100644 src/tests/kits/support/blocker/SemaphoreLockCountTest1.cpp
create mode 100644 src/tests/kits/support/blocker/SemaphoreLockCountTest1.h
create mode 100644 src/tests/kits/translation/BitmapStreamTest.cpp
create mode 100644 src/tests/kits/translation/BitmapStreamTest.h
create mode 100644 src/tests/kits/translation/TranslatorRosterTest.cpp
create mode 100644 src/tests/kits/translation/TranslatorRosterTest.h
create mode 100644 src/tests/kits/translation/data/garbled_data
create mode 100644 src/tests/kits/translation/data/images/image.gif
create mode 100644 src/tests/kits/translation/data/images/image.jpg
create mode 100644 src/tests/kits/translation/data/images/image.png
create mode 100644 src/tests/kits/translation/multitest/MainControlWindow.cpp
create mode 100644 src/tests/kits/translation/multitest/MainControlWindow.h
create mode 100644 src/tests/kits/translation/multitest/MultiTest.cpp
create mode 100644 src/tests/kits/translation/multitest/MultiTest.h
create mode 100644 src/tests/kits/translation/multitest/WorkView.cpp
create mode 100644 src/tests/kits/translation/multitest/WorkView.h
create mode 100644 src/tests/kits/translation/multitest/WorkWindow.cpp
create mode 100644 src/tests/kits/translation/multitest/WorkWindow.h
create mode 100644 src/tests/servers/input/msgspy/MsgSpy.cpp
create mode 100644 src/tests/servers/input/msgspy/clean
create mode 100644 src/tests/servers/input/msgspy/start
create mode 100644 src/tests/servers/input/msgspy/stop
create mode 100644 src/tests/servers/input/portspy/PortSpy.cpp
create mode 100644 src/tools/Jamfile
create mode 100644 src/tools/cppunit/CppUnitShell.cpp
create mode 100644 src/tools/cppunit/Jamfile
create mode 100644 src/tools/cppunit/TestCase.cpp
create mode 100644 src/tools/cppunit/TestResult.cpp
create mode 100644 src/tools/cppunit/TestShell.cpp
create mode 100644 src/tools/cppunit/TestSuite.cpp
create mode 100644 src/tools/cppunit/cppunit/Asserter.cpp
create mode 100644 src/tools/cppunit/cppunit/CompilerOutputter.cpp
create mode 100644 src/tools/cppunit/cppunit/Exception.cpp
create mode 100644 src/tools/cppunit/cppunit/NotEqualException.cpp
create mode 100644 src/tools/cppunit/cppunit/RepeatedTest.cpp
create mode 100644 src/tools/cppunit/cppunit/SourceLine.cpp
create mode 100644 src/tools/cppunit/cppunit/SynchronizedObject.cpp
create mode 100644 src/tools/cppunit/cppunit/TestAssert.cpp
create mode 100644 src/tools/cppunit/cppunit/TestCase.cpp
create mode 100644 src/tools/cppunit/cppunit/TestFactoryRegistry.cpp
create mode 100644 src/tools/cppunit/cppunit/TestFailure.cpp
create mode 100644 src/tools/cppunit/cppunit/TestResult.cpp
create mode 100644 src/tools/cppunit/cppunit/TestResultCollector.cpp
create mode 100644 src/tools/cppunit/cppunit/TestRunner.cpp
create mode 100644 src/tools/cppunit/cppunit/TestSetUp.cpp
create mode 100644 src/tools/cppunit/cppunit/TestSucessListener.cpp
create mode 100644 src/tools/cppunit/cppunit/TestSuite.cpp
create mode 100644 src/tools/cppunit/cppunit/TextOutputter.cpp
create mode 100644 src/tools/cppunit/cppunit/TextTestProgressListener.cpp
create mode 100644 src/tools/cppunit/cppunit/TextTestResult.cpp
create mode 100644 src/tools/cppunit/cppunit/TypeInfoHelper.cpp
create mode 100644 src/tools/cppunit/cppunit/XmlOutputter.cpp
create mode 100644 src/tools/hey/Jamfile
create mode 100644 src/tools/hey/hey.c
create mode 100644 src/tools/hey/hey.h
create mode 100644 src/tools/hey/readme.html
create mode 100644 src/tools/jam/Jamfile
create mode 100644 src/tools/restest/Elf.h
create mode 100644 src/tools/restest/Exception.h
create mode 100644 src/tools/restest/OffsetFile.cpp
create mode 100644 src/tools/restest/OffsetFile.h
create mode 100644 src/tools/restest/Pef.h
create mode 100644 src/tools/restest/ResourceFile.cpp
create mode 100644 src/tools/restest/ResourceFile.h
create mode 100644 src/tools/restest/ResourceItem.cpp
create mode 100644 src/tools/restest/ResourceItem.h
create mode 100644 src/tools/restest/ResourcesDefs.h
create mode 100644 src/tools/restest/Warnings.cpp
create mode 100644 src/tools/restest/Warnings.h
create mode 100644 src/tools/restest/restest.cpp
create mode 100644 src/tools/stubgen/COPYING
create mode 100644 src/tools/stubgen/Example Usage for OpenBeOS.txt
create mode 100644 src/tools/stubgen/README
create mode 100644 src/tools/stubgen/etc/Debug.C
create mode 100644 src/tools/stubgen/etc/Debug.H
create mode 100644 src/tools/stubgen/getopt.c
create mode 100644 src/tools/stubgen/getopt.h
create mode 100644 src/tools/stubgen/lexer.l
create mode 100644 src/tools/stubgen/main.c
create mode 100644 src/tools/stubgen/parser.y
create mode 100644 src/tools/stubgen/pathname.c
create mode 100644 src/tools/stubgen/pathname.h
create mode 100644 src/tools/stubgen/table.c
create mode 100644 src/tools/stubgen/table.h
create mode 100644 src/tools/stubgen/test/MJRString.H
create mode 100644 src/tools/stubgen/test/Point.h
create mode 100644 src/tools/stubgen/test/Rational.H
create mode 100644 src/tools/stubgen/test/blank.h
create mode 100644 src/tools/stubgen/test/defines.h
create mode 100644 src/tools/stubgen/test/heap.H
create mode 100644 src/tools/stubgen/test/pathname_tst.c
create mode 100644 src/tools/stubgen/test/sample.h
create mode 100644 src/tools/stubgen/util.c
create mode 100644 src/tools/stubgen/util.h
diff --git a/Jamfile b/Jamfile
new file mode 100644
index 0000000000..00af14db81
--- /dev/null
+++ b/Jamfile
@@ -0,0 +1,4 @@
+SubDir OBOS_TOP ;
+
+SubInclude OBOS_TOP sources ;
+
diff --git a/Jamrules b/Jamrules
new file mode 100644
index 0000000000..c1dd7e0762
--- /dev/null
+++ b/Jamrules
@@ -0,0 +1,735 @@
+# Include BuildConfig
+{
+ local buildConfig = [ GLOB $(OBOS_TOP) : BuildConfig ] ;
+ if ! $(buildConfig)
+ {
+ EXIT "No BuildConfig!"
+ "Run ./configure in the source tree's root directory first!" ;
+ }
+ include $(buildConfig) ;
+}
+
+# Determine if we're building on PPC or x86
+# Determine mimetype of executable
+# Cross compiling can come later
+
+if $(METROWERKS) {
+ OBOS_TARGET ?= "ppc.R5" ;
+ OBOS_TARGET_TYPE ?= "application/x-be-executable" ;
+ OBOS_ARCH ?= "ppc" ;
+ OBOS_TARGET_DEFINE ?= "ARCH_ppc" ;
+} else {
+ OBOS_TARGET ?= "x86.R5" ;
+ OBOS_TARGET_TYPE ?= "application/x-vnd.Be-elfexecutable" ;
+ OBOS_ARCH ?= "x86" ;
+ OBOS_TARGET_DEFINE ?= "ARCH_x86" ;
+ OBOS_TARGET_DIR ?= "x86" ;
+}
+
+KERNEL_CCFLAGS ?= "-Wall -Wno-multichar -Wmissing-prototypes -finline -nostdinc" ;
+KERNEL_CCFLAGS += "-fno-builtin -D$(OBOS_TARGET_DEFINE) " ;
+
+AR = ar r ;
+OPTIM = -O2 ;
+
+# If no OBOS_OBJECT_TARGET is not defined yet, use our default directory and
+# include our "OBOS_TARGET" as subdirectory in there (to prevent different
+# builds mixing objects from different targets).
+if ! $(OBOS_OBJECT_TARGET) {
+ OBOS_OBJECT_TARGET ?= [ FDirName $(OBOS_TOP) objects $(OBOS_TARGET) ] ;
+}
+
+# If no OBOS_DISTRO_TARGET is not defined yet, use our default directory and
+# include our "OBOS_TARGET" as subdirectory in there (to prevent different
+# builds mixing executables from different targets).
+if ! $(OBOS_DISTRO_TARGET) {
+ OBOS_DISTRO_TARGET ?= [ FDirName $(OBOS_TOP) distro $(OBOS_TARGET) ] ;
+}
+
+# Set our version number if not already set and mark it as a developer build
+if ! $(OBOS_BUILD_VERSION) {
+ OBOS_BUILD_VERSION ?= "1 0 0 a 1" ;
+ OBOS_BUILD_DESCRIPTION ?= "Developer Build" ;
+}
+
+# If OBOS_BUILD_VERSION is set, but OBOS_BUILD_DESCRIPTION isn't, mark it as
+# an unknown build.
+if ! $(OBOS_BUILD_DESCRIPTION) {
+ OBOS_BUILD_DESCRIPTION ?= "Unknown Build" ;
+}
+
+# Relative subdirs for distro dir (these are for *INTERNAL* use by the following rules only!)
+OBOS_PREFS_DIR ?= [ FDirName $(OBOS_DISTRO_TARGET) beos preferences ] ;
+OBOS_SERVER_DIR ?= [ FDirName $(OBOS_DISTRO_TARGET) beos system servers ] ;
+OBOS_ADDON_DIR ?= [ FDirName $(OBOS_DISTRO_TARGET) beos system add-ons ] ;
+OBOS_SHLIB_DIR ?= [ FDirName $(OBOS_DISTRO_TARGET) beos system lib ] ;
+OBOS_STLIB_DIR ?= [ FDirName $(OBOS_DISTRO_TARGET) beos system lib ] ;
+OBOS_KERNEL_DIR ?= [ FDirName $(OBOS_DISTRO_TARGET) beos system ] ;
+OBOS_TEST_DIR ?= [ FDirName $(OBOS_TOP) tests ] ;
+
+OBOS_KERNEL_CONFIG = config.$(OBOS_ARCH).ini ;
+OBOS_KERNEL = kernel.$(OBOS_ARCH) ;
+OBOS_FLOPPY = floppy.$(OBOS_ARCH) ;
+
+rule SetupIncludes
+{
+ OBOS_INCLUDES ?= . add-ons app be_apps device drivers game interface kernel mail media midi midi2 net opengl storage support translation ;
+ UsePublicHeaders $(OBOS_INCLUDES) ;
+}
+
+#-------------------------------------------------------------------------------
+# Things Jam needs in order to work :)
+#-------------------------------------------------------------------------------
+
+rule UserObject
+{
+ switch $(2)
+ {
+ case *.S : assemble $(1) : $(2) ;
+ case * : ECHO "unknown suffix on" $(2) ;
+ }
+}
+
+# Override the default to give "prettier" command lines.
+actions Cc
+{
+ $(CC) -c $(2) $(CCFLAGS) $(CCDEFS) $(CCHDRS) -o $(1) ;
+}
+
+actions C++
+{
+ $(C++) -c $(2) $(C++FLAGS) $(CCDEFS) $(CCHDRS) -o $(1) ;
+}
+
+
+#-------------------------------------------------------------------------------
+# General High-level OBOS target rules
+#-------------------------------------------------------------------------------
+
+rule Preference
+{
+ # Preference : ;
+# SetupIncludes ;
+ SetupObjectsDir ;
+ Main $(<) : $(>) ;
+ MakeLocate $(<) : $(OBOS_PREFS_DIR) ;
+}
+
+rule Server
+{
+ # Server : ;
+
+ SetupIncludes ;
+ SetupObjectsDir ;
+ Main $(<) : $(>) ;
+ MakeLocate $(<) : $(OBOS_SERVER_DIR) ;
+}
+
+# test pseudo targets
+NOTFILE obostests ;
+NOTFILE r5tests ;
+
+rule CommonUnitTest
+{
+ # CommonUnitTest : : :
+ # : : ;
+ # Builds a unit test for both OBOS and R5 modules.
+ # The name of the target.
+ # The list of sources.
+ # The directory for the target (as passed to FDirName).
+ # A list of link libraries for the OBOS tests (as passed
+ # to LinkSharedOSLibs).
+ # A list of link libraries for the R5 tests (as passed
+ # to LinkSharedOSLibs).
+ # A list of public header dirs (as passed to
+ # UsePublicHeaders).
+
+ UnitTest $(1) : $(2) : $(3) : $(4) : $(6) ;
+ R5UnitTest $(1) : $(2) : $(3) : $(5) ;
+}
+
+rule UnitTest
+{
+ # UnitTest : : : :
+ # Builds a unit test for an OBOS module.
+ # The name of the target.
+ # The list of sources.
+ # The directory for the target (as passed to FDirName).
+ # A list of link libraries (as passed to LinkSharedOSLibs).
+ # A list of public header dirs (as passed to
+ # UsePublicHeaders).
+
+ local target = $(1) ;
+ local sources = $(2) ;
+ local dest = $(3) ;
+ local libraries = $(4) ;
+ local headerDirs = $(5) ;
+
+# SetupIncludes ;
+ UseCppUnitHeaders ;
+ SetupObjectsDir ;
+ MakeLocateObjects $(sources) ;
+ Main $(target) : $(sources) ;
+ MakeLocate $(target) : [ FDirName $(OBOS_TEST_DIR) $(dest) ] ;
+ DEPENDS $(target) : libcppunit.so ;
+ DEPENDS obostests : $(target) ;
+ LinkSharedOSLibs $(target) : libcppunit.so $(libraries) ;
+ UsePublicHeaders $(headerDirs) : $(sources) ;
+ ObjectDefines $(sources) : TEST_OBOS ;
+
+ # Turn debugging on. That is usually desired for test code.
+ ObjectCcFlags $(sources) : "-g" ;
+ ObjectC++Flags $(sources) : "-g" ;
+}
+
+rule R5UnitTest
+{
+ # R5UnitTest : : :
+ # Builds a unit test for an R5 module. "_r5" is appended to the object
+ # and the target name.
+ # The name of the target.
+ # The list of sources.
+ # The directory for the target (as passed to FDirName).
+ # A list of link libraries (as passed to LinkSharedOSLibs).
+
+ local target = $(1)_r5 ;
+ local sources = $(2) ;
+ local dest = $(3) ;
+ local libraries = $(4) ;
+ local objects = [ R5ObjectNames $(sources) ] ;
+
+ UseCppUnitHeaders ;
+ SetupObjectsDir ;
+ MakeLocateObjects $(objects) ;
+
+ # Our Main replacement.
+ MainFromObjects $(target) : $(objects) ;
+ local source ;
+ for source in [ FGristFiles $(sources) ]
+ {
+ local object = [ R5ObjectNames $(source) ] ;
+ Object $(object) : $(source) ;
+ Depends obj : $(object) ;
+ }
+
+ MakeLocate $(target) : [ FDirName $(OBOS_TEST_DIR) $(dest) ] ;
+ DEPENDS $(target) : libcppunit.so ;
+ DEPENDS r5tests : $(target) ;
+ LinkSharedOSLibs $(target) : libcppunit.so $(libraries) ;
+ ObjectDefines $(objects) : TEST_R5 ;
+
+ # Turn debugging on. That is usually desired for test code.
+ ObjectCcFlags $(objects) : "-g" ;
+ ObjectC++Flags $(objects) : "-g" ;
+}
+
+rule R5ObjectNames
+{
+ # R5ObjectNames ;
+ # Returns a list of gristed object names given a list of source file names.
+ # Moreover each object names gets "_r5" inserted before the object suffix.
+ local objects = $(1:S=)_r5 ;
+ return [ FGristFiles $(objects:S=$(SUFOBJ)) ] ;
+}
+
+rule Addon
+{
+ # Addon : : ;
+
+ SetupIncludes ;
+ SetupObjectsDir ;
+ Main $(1) : $(3) ;
+
+ # Create output dir path for addon
+ local targetdir;
+ targetdir = [ FDirName $(OBOS_ADDON_DIR) $(2) ] ;
+
+ MakeLocate $(1) : $(targetdir) ;
+ LINKFLAGS on $(1) = $(LINKFLAGS) -nostart -Xlinker -soname=\"$(1)\" ;
+}
+
+rule MakeLocateObjects
+{
+ # MakeLocateObjects ;
+
+ local _objs = $(1:S=$(SUFOBJ)) ;
+
+ for o in $(_objs)
+ {
+ local dir = $(o:D) ;
+ if $(dir) {
+ MakeLocate $(o) : [ FDirName $(LOCATE_TARGET) $(dir) ] ;
+ } else {
+ MakeLocate $(o) : $(LOCATE_TARGET) ;
+ }
+ }
+}
+
+rule StaticLibrary
+{
+ # StaticLibrary : ;
+
+ SetupIncludes ;
+ SetupObjectsDir ;
+ MakeLocateObjects $(2) ;
+ Library lib$(<).a : $(>) ;
+ MakeLocate lib$(<).a : $(OBOS_STLIB_DIR) ;
+}
+
+rule SharedLibrary
+{
+ # SharedLibrary : ;
+ local _lib = lib$(1).so ;
+
+# SetupIncludes ;
+ SetupObjectsDir ;
+ MakeLocateObjects $(2) ;
+ Main $(_lib) : $(2) ;
+ MakeLocate $(_lib) : $(OBOS_SHLIB_DIR) ;
+ LINKFLAGS on $(_lib) = $(LINKFLAGS) -nostart -Xlinker -soname=\"$(_lib)\" ;
+}
+
+rule LinkSharedOSLibs
+{
+ # LinkSharedOSLibs : ;
+ # Valid elements for are e.g. "be" or "libopenbeos.so" or
+ # "/boot/.../libfoo.so". If the basename starts with "lib", it is added
+ # to the NEEDLIBS variable (i.e. the file will be bound!), otherwise it is
+ # prefixed "-l" and added to LINKLIBS.
+
+ for i in $(>)
+ {
+ switch $(i:B)
+ {
+ case lib* : NEEDLIBS on $(1) += $(i) ; DEPENDS $(1) : $(i) ;
+ case * : LINKLIBS on $(1) += -l$(i) ;
+ }
+ }
+}
+
+rule LinkStaticOSLibs
+{
+ # LinkStaticOSLibs : ;
+
+ for i in $(>)
+ {
+ LINKLIBS on $(<) = $(LINKLIBS) -l $(i) ;
+ }
+}
+
+rule AddResources
+{
+ # AddResources : ;
+
+ local dir;
+
+ dir = [ FDirName $(OBOS_TOP) $(SUBDIR_TOKENS) ] ;
+
+ for i in $(>)
+ {
+ RESFILES on $(<) = [ FDirName $(dir) $(i) ] ;
+ DEPENDS $(<) : [ FDirName $(dir) $(i) ] ;
+ }
+}
+
+rule UsePublicHeaders
+{
+ # UsePublicHeaders [ ] ;
+ #
+ # Adds the public C header dirs given by to the header search
+ # dirs of the subdirectory or of , if given.
+ # NOTE: Currently the latter doesn't work, since Cc seems to be
+ # buggy: It sets the HDRS variable to $(SUBDIRHDRS) instead of adding it.
+
+ local list = $(1) ;
+ local targets = $(2) ;
+
+ local headers ;
+
+ for i in $(list) {
+ headers += [ FDirName $(OBOS_TOP) headers obos public $(i) ] ;
+ }
+
+ UseHeaders $(headers) : $(targets) ;
+}
+
+rule UsePrivateHeaders
+{
+ # UsePrivateHeaders [ ] ;
+ #
+ # Adds the private C header dirs given by to the header search
+ # dirs of the subdirectory or of , if given.
+ # NOTE: Currently the latter doesn't work, since Cc seems to be
+ # buggy: It sets the HDRS variable to $(SUBDIRHDRS) instead of adding it.
+
+ local list = $(1) ;
+ local targets = $(2) ;
+
+ local headers ;
+
+ for i in $(list) {
+ headers += [ FDirName $(OBOS_TOP) headers obos private $(i) ] ;
+ }
+
+ UseHeaders $(headers) : $(targets) ;
+}
+
+rule UseHeaders
+{
+ # UseHeaders [ ] ;
+ #
+ # Adds the C header dirs to the header search
+ # dirs of the subdirectory or of , if given.
+ # NOTE: Currently the latter doesn't work, since Cc seems to be
+ # buggy: It sets the HDRS variable to $(SUBDIRHDRS) instead of adding it.
+
+ local headers = $(1) ;
+ local targets = $(2) ;
+
+ if $(targets) {
+ ObjectHdrs $(targets) : $(headers) ;
+ } else {
+ # Note: Unlike ObjectHdrs SubDirHdrs expects only one dir given as
+ # path component list.
+ for header in $(headers) {
+ SubDirHdrs $(header) ;
+ }
+ }
+}
+
+rule UseCppUnitHeaders
+{
+ local opt = -I [ FDirName $(OBOS_TOP) headers tools cppunit ] ;
+
+ SubDirCcFlags $(opt) ;
+ SubDirC++Flags $(opt) ;
+}
+
+rule UseArchHeaders
+{
+ # usage: UseArchHeaders
+ # specifies the architecture (e.g. x86).
+ local opt = -D$(OBOS_TARGET_DEFINE) ;
+ SubDirCcFlags $(opt) ;
+ SubDirC++Flags $(opt) ;
+ SubDirHdrs [ FDirName $(OBOS_TOP) headers obos private kernel arch $(1) ] ;
+}
+
+#-------------------------------------------------------------------------------
+# Low-level OBOS utility rules
+#-------------------------------------------------------------------------------
+rule SetupObjectsDir
+{
+ local rel_objectsdir;
+
+ # Copy subdir tokens except the first, as that will be "sources", and we
+ # do not want to include that :)
+ rel_objectsdir = [ FDirName $(SUBDIR_TOKENS[2-]) ] ;
+ LOCATE_TARGET = [ FDirName $(OBOS_OBJECT_TARGET) $(rel_objectsdir) ] ;
+}
+
+#-------------------------------------------------------------------------------
+# Link rule/action are overwritten as they don't handle linking files who's name
+# contain spaces very well. Also adds resources and version to executable.
+#-------------------------------------------------------------------------------
+rule Link
+{
+ # Note: RESFILES must be set before invocation.
+ MODE on $(<) = $(EXEMODE) ;
+ on $(1) XRes $(1) : $(RESFILES) ;
+ SetVersion $(1) ;
+ Chmod $(<) ;
+ SetType $(1) ;
+ MimeSet $(1) ;
+}
+
+actions Link bind NEEDLIBS
+{
+ $(LINK) $(LINKFLAGS) -o "$(1)" $(UNDEFS) $(2) $(NEEDLIBS) $(LINKLIBS) ;
+}
+
+# BeOS specific rules
+
+rule XRes
+{
+ # XRes :
+ if $(2)
+ {
+ DEPENDS $(1) : $(2) ;
+ XRes1 $(1) : $(2) ;
+ }
+}
+
+rule XRes1 { }
+
+rule SetVersion
+{
+ # SetVersion
+}
+
+rule SetType
+{
+ # SetType
+}
+
+rule MimeSet
+{
+ # SetType
+}
+
+
+if $(OS) = BEOS
+{
+
+actions XRes1
+{
+ xres -o "$(1)" $(2) ;
+}
+
+actions SetVersion
+{
+ setversion "$(1)" -system $(OBOS_BUILD_VERSION) -short "$(OBOS_BUILD_DESCRIPTION)" ;
+}
+
+actions SetType
+{
+ settype -t $(OBOS_TARGET_TYPE) "$(1)" ;
+}
+
+actions MimeSet
+{
+ mimeset -f "$(1)" ;
+}
+
+} # if BEOS
+
+
+rule assemble
+{
+ DEPENDS $(1) : $(2) ;
+ Clean clean : $(1) ;
+}
+
+actions assemble
+{
+$(CC) -c $(2) -O2 $(KERNEL_CCFLAGS) -o $(1) ;
+}
+
+## Kernel stuff!
+
+rule SetupKernel
+{
+ # Usage SetupKernel : ;
+
+ local _objs = $(1:S=$(SUFOBJ)) ;
+
+ UsePublicHeaders kernel ;
+ UsePrivateHeaders kernel ;
+ UseArchHeaders $(OBOS_ARCH) ;
+
+ SetupObjectsDir ;
+
+ CCFLAGS on $(_objs) = $(KERNEL_CCFLAGS) $(2) ;
+ C++FLAGS on $(_objs) = $(KERNEL_CCFLAGS) $(2) ;
+}
+
+rule KernelObjects
+{
+ SetupKernel $(1) : $(2) ;
+
+ Objects $(1) ;
+}
+
+rule KernelLd
+{
+ # KernelLd : : : : ;
+
+ SetupKernel $(2) ;
+ LINK on $(1) = ld ;
+
+ LINKFLAGS on $(1) = $(4) ;
+ if $(3) { LINKFLAGS on $(1) += --script=$(3) ; }
+
+ # Remove any preset LINKLIBS
+ LINKLIBS on $(1) = ;
+
+ # Show that we depend on the libraries we need
+ Clean clean : $(1) ;
+ Depends all : $(1) ;
+ Depends $(1) : $(2) ;
+
+ if $(6) {
+ Depends $(OBOS_KERNEL_CONFIG) : $(1) ;
+ for i in $(6) {
+ SECTIONS on $(OBOS_KERNEL_CONFIG) += ":" $(i) elf32 [ FDirName $(LOCATE_TARGET) $(1) ] ;
+ }
+ }
+
+ MakeLocate $(1) : $(LOCATE_TARGET) ;
+
+ # Add libgcc.a - NB this should be detected not hard coded!
+ if ! $(5) {
+ LINKLIBS on $(1) += "-L $(GCC_PATH) -lgcc" ;
+ }
+}
+
+actions KernelLd
+{
+$(LINK) $(LINKFLAGS) -o $(1) $(2) $(LINKLIBS) ;
+}
+
+rule KernelStaticLibrary
+{
+ # Usage KernelStaticLibrary : : ;
+ # This is designed to take a set of sources and libraries and create
+ # a file called lib.a
+
+ SetupKernel $(2) : $(3) ;
+
+ MakeLocateObjects $(2) ;
+ Library $(1) : $(2) ;
+}
+
+rule KernelStaticLibraryObjects
+{
+ # Usage KernelStaticLibrary : ;
+ # This is designed to take a set of sources and libraries and create
+ # a file called
+
+ SetupKernel $(2) ;
+
+ # Show that we depend on the libraries we need
+ Clean clean : $(1) ;
+ Depends all : $(1) ;
+ Depends $(1) : $(2) ;
+
+ MakeLocate $(1) : $(LOCATE_TARGET) ;
+}
+
+actions KernelStaticLibraryObjects
+{
+ar -r $(1) $(2) ;
+}
+
+rule SystemMain
+{
+ # Usage SystemMain : : ;
+ SetupObjectsDir ;
+
+ CCFLAGS on $(1) = $(OPTIM) ;
+ C++FLAGS on $(1) = $(OPTIM) ;
+ LINKLIBS = ;
+
+ # This allows us to preset certain commands we use
+ # for building.
+ if $(3) {
+ for obj in $(3) {
+ BUILD_CMD on $(obj) = [ FDirName $(LOCATE_TARGET) $(1) ] ;
+ }
+ }
+
+ Main $(1) : $(2) ;
+}
+
+rule KernelConfigSection
+{
+ # KernelConfigSection : : ;
+ SECTIONS on $(OBOS_KERNEL_CONFIG) += ":" $(1) $(2) $(3) ;
+}
+
+rule WriteKernelConfig
+{
+ # usage: WriteKernelConfig ;
+
+ Depends files : $(1) ;
+
+ LOCATE on $(1) = $(LOCATE_TARGET) ;
+
+ MakeLocate $(1) : $(LOCATE_TARGET) ;
+
+ Clean clean : $(1) ;
+}
+
+actions WriteKernelConfig
+{
+ target=$(1)
+ echo "# OpenBeOS Kernel Config File" > $target
+ echo "# Automatically generated - do not edit!" >> $target
+ issection="0"
+ section=
+ for i in "$(SECTIONS)" ; do
+ if [ $issection == 1 ]; then
+ section=$i
+ issection=2
+ echo "["$section"]" >> $target
+ elif [ $issection == 2 ]; then
+ type=$i
+ issection=3
+ echo "type="$type >> $target
+ else
+ if [ $i == ":" ]; then
+ issection=1
+ echo "" >> $target
+ else
+ file=$i
+ case $file in
+ /*) ;;
+ *) file=`pwd`/$file;;
+ esac
+ echo "file="$file >> $target
+ fi
+ fi
+ done
+}
+
+rule BuildKernel
+{
+ # Usage BuildKernel : ;
+
+ Depends all : $(1) ;
+ Depends $(1) : $(2) ;
+ Clean clean : $(1) ;
+
+ MakeLocate $(1) : $(LOCATE_TARGET) ;
+}
+
+actions BuildKernel
+{
+ $(BUILD_CMD) --strip-debug --strip-binary strip $(2) -o $(1) ;
+ echo ""
+ echo "Kernel linked!"
+ echo ""
+}
+
+# At present I don't bother moving the final location for
+# the floppy image as it makes copying it onto a floppy easier if it's
+# where you did the build. This is easy enough changed.
+rule KernelFloppyImage
+{
+ # Usage KernelFloppyImage : : ;
+
+ Depends all : $(1) ;
+ Depends $(1) : $(2) ;
+ Clean clean : $(1) ;
+
+ BOOT_BLOCK on $(1) = $(3) ;
+}
+
+# This may be a bit verbose, but I think it's useful to show what's
+# going on, at least in this early stage of development.
+actions KernelFloppyImage
+{
+ $(BUILD_CMD) $(BOOT_BLOCK) $(2) $(1) ;
+ echo ""
+ echo "*************************************************"
+ echo "* Kernel build completed! *"
+ echo "* Boot image for a 1.44M floppy created *"
+ echo "*************************************************"
+ echo ""
+ echo "Floppy image is $(OBOS_FLOPPY)"
+ echo "The following command will write it to a floppy on BeOS"
+ echo " dd if=$(OBOS_FLOPPY) of=/dev/disk/floppy/raw bs=18k"
+ echo ""
+}
+
+
diff --git a/ReadMe b/ReadMe
new file mode 100644
index 0000000000..704a170cf3
--- /dev/null
+++ b/ReadMe
@@ -0,0 +1,102 @@
+Building
+--------
+
+The build system uses Jam/MR (http://www.perforce.com/jam/jam.html).
+A BeOS executable of Jam 2.3.1 is available at:
+
+ http://open-beos.sf.net/misc/jam.zip
+
+Unzip the executable and copy it to /boot/home/config/bin.
+
+To build the whole source tree, launch a Terminal, cd into the openbeos root
+directory and just type:
+
+ $ ./configure
+ $ jam
+
+The configure script generates a file named BuildConfig. As long as configure
+is not modified (!), there is no need to call it again. That is for
+re-building you only need to invoke Jam. If you don't update the source tree
+very frequently, you may want to execute configure after each update just to
+be on the safe side.
+
+NOTE: If you have checked out the latest CVS version, it is not unlikely that
+some parts of the tree won't build.
+
+
+Running
+-------
+
+If the build went fine, a file named floppy.x86 had been created in the
+root directory of the source tree. What you want to do now, is to boot from
+this floppy image. Therefore you either write the image onto a real floppy
+disk and restart you computer, or you write it onto a "virtual floppy disk"
+emulated by a x86 PC emulator and just start this emulator.
+
+1. Real Floppy
+
+Put in the disk and type in the source tree's root dir:
+
+ $ dd if=floppy.x86 of=/dev/disk/floppy/raw bs=18k
+
+
+2. Emulated Floppy (Bochs)
+
+Type:
+
+ $ dd if=floppy.x86 of= bs=18k
+
+where has to be replaced with the filename of the floppy
+image Bochs has been told to use (e.g. /tmp/obos.img).
+
+
+Bochs
+-----
+
+Version 1.4 of Bochs for BeOS (BeBochs) can be downloaded from BeBits:
+
+ http://www.bebits.com/app/2902
+
+The package installs to: /boot/apps/BeBochs1.4
+
+You have to set up a configuration for Bochs. A relatively short and
+painless procedure follows:
+
+Lauch a Terminal:
+
+ $ cd /tmp
+ $ /boot/apps/BeBochs1.4/bximage
+
+Answer with "fd", RETURN (for 1.44) and "obos.img", and a floppy image
+/tmp/obos.img will be created.
+Open folder /boot/apps/BeBochs1.4 and backup .bochsrc. Open .bochsrc with
+your favorite text editor, remove the complete contents and paste the
+following instead (you may as well take the original file and insert/replace/
+keep the respective lines):
+
+romimage: file=bios/BIOS-bochs-latest, address=0xf0000
+megs: 32
+vgaromimage: bios/VGABIOS-elpin-2.40
+floppya: 1_44=/tmp/obos.img, status=inserted
+boot: a
+log: /var/log/bochs-obos.log
+panic: action=ask
+error: action=report
+info: action=report
+debug: action=ignore
+vga_update_interval: 300000
+keyboard_serial_delay: 250
+keyboard_paste_delay: 100000
+floppy_command_delay: 500
+ips: 2000000
+
+Now put the OBOS boot image onto you "virtual" floppy and start Bochs:
+
+ $ cd
+ $ dd if=floppy.x86 of=/tmp/obos.img bs=18k
+ $ cd /boot/apps/BeBochs1.4
+ $ ./bochs
+
+Answer three times with RETURN and with some patience you will see OBOS
+booting.
+
diff --git a/configure b/configure
new file mode 100755
index 0000000000..4e606a1711
--- /dev/null
+++ b/configure
@@ -0,0 +1,37 @@
+#!/bin/sh
+#
+# configure
+#
+# No parameters for now.
+
+platform=`uname`
+
+# BeOS
+if [ "${platform}" == "BeOS" ] ; then
+ # GGC_PATH
+ if [ "x${GCC_PATH}" == "x" ] ; then
+ gcclib=`gcc -print-libgcc-file-name`
+ GCC_PATH=`dirname ${gcclib}`
+ fi
+
+# Linux
+else if [ "${platform}" == "Linux" ] ; then
+ # GGC_PATH
+ if [ "x${GCC_PATH}" == "x" ] ; then
+ gcclib=`gcc -print-libgcc-file-name`
+ GCC_PATH=`dirname ${gcclib}`
+ fi
+
+# Unknown platform
+else
+ echo Unsupported platform: ${platform}
+ exit 1
+fi; fi
+
+# Generate BuildConfig
+cat << EOF > BuildConfig
+# BuildConfig
+# Note: This file has been automatically generated by configure.
+
+GCC_PATH = ${GCC_PATH} ;
+EOF
diff --git a/docs/develop/app/usecases/BMessageQueueUseCases.html b/docs/develop/app/usecases/BMessageQueueUseCases.html
new file mode 100644
index 0000000000..11a8f8d93b
--- /dev/null
+++ b/docs/develop/app/usecases/BMessageQueueUseCases.html
@@ -0,0 +1,147 @@
+
+
+
+BMessageQueue Use Cases and Implementation Details
+
+
+
+
+
+
+BMessageQueue Use Cases and Implementation Details:
+
+This document describes the BMessageQueue interface and some basics of how it is implemented.
+The document has the following sections:
+
+
+- BMessageQueue Interface
+- BMessageQueue Use Cases
+- BMessageQueue Implementation
+
+
+BMessageQueue Interface:
+
+The BMessageQueue class is a simple class for managing a queue of BMessages. The best
+source of information for the BMessageQueue interface can be found
+here in the Be Book.
+
+
+BMessageQueue Use Cases:
+
+The following use cases cover the BMessageQueue functionality:
+
+
+Construction: A BMessageQueue does not take any arguments when it is constructed.
+After construction, the queue is empty.
+
+Destruction: When a BMessageQueue is deconstructed, all BMessages on the queue are
+deleted. This implies that all BMessages added to a BMessageQueue must be allocated on the heap
+with the new operation. The BMessageQueue is locked before performing the delete to ensure
+that the queue doesn't change while it is being deleted. The lock is never released from the
+destructor to ensure that any AddMessage() or other members blocking for the lock never
+succeed in getting the lock. They will fail once the BMessageQueue is completely deleted.
+
+Add Message 1: When AddMessage() is used to put a BMessage on the queue, the
+BMessageQueue takes ownership of the BMessage. The BMessage should be created on the heap but
+there is no checking to ensure that has happened. The BMessageQueue records the order in
+which the BMessages are added to the queue.
+
+Add Message 2: No check is performed to see if the BMessage is already part of that
+BMessageQueue or any other when AddMessage() is used to put a BMessage on a queue. An attempt to
+add a BMessage to a BMessageQueue which already has that same BMessage in it (where equality is
+based on the address of the BMessage) will corrupt the queue. An attempt to add a BMessage to a
+BMessageQueue when that BMessage is already in another BMessageQueue will corrupt the original
+BMessageQueue. It is up to the caller of AddMessage() to use RemoveMessage() to prevent
+queue corruption.
+
+Add Message 3: BMessage's can be added using AddMessage() from multiple threads
+at the same time with no risk of queue corruption. Similarly, RemoveMessage() or NextMessage()
+can be executing from another thread while an AddMessage() is started without corrupting the queue.
+An AddMessage() attempt will block if another thread has used the Lock() member to lock the
+BMessageQueue.
+
+Remove Message 1: The RemoveMessage() member takes a BMessage pointer. The
+BMessageQueue is searched for this BMessage pointer. If that pointer is in the queue, then it
+is removed from the queue. The BMessage is not deleted (note the BeBook implies it is but in
+fact it is not). If the BMessage pointer is not on this BMessageQueue, this call has no affect.
+After this call completes successfully, it is as though AddMessage() was never called for
+this BMessage pointer.
+
+Remove Message 2: BMessage's can be removed using RemoveMessage() from multiple
+threads at the same time with no risk of queue corruption. Similarly, AddMessage() or
+NextMessage() can be executing from another thread while a RemoveMessage() is started without
+corrupting the queue. A RemoveMessage() attempt will block if another thread has used the Lock()
+member to lock the BMessageQueue.
+
+Count Messages: The CountMessages() member function returns the number of BMessage's
+in the BMessageQueue. If there are no messages on the queue (an example of this situation is just
+after construction), the member returns 0. Note, it is possible for the count to become corrupted
+if the situation in Add Message 2 occurs.
+
+Is Empty: The IsEmpty() member function returns true if there are no BMessages on the
+BMessageQueue. If there are one or more BMessages on the BMessageQueue, it returns false.
+
+Find Message 1: The FindMessage() member function is overloaded. If the member
+function takes a single int32 argument, it is used to return the BMessage on the queue at a
+particular index as indicated by the argument. The first message is at index 0, the second
+at index 1 etc. If no message is at that index, NULL is returned.
+
+Find Message 2: The other FindMessage() member function takes a single uint32
+argument and an optional int32 argument. The first mandatory argument specifies the "what" code
+for the BMessage being searched for. The second optional argument specifies what occurance of
+that "what" code in a BMessage on the queue should be returned. If the second argument is not
+provided, it is assumed to be 0. If the second argument is 0, the first BMessage that has the
+what code provided is returned. If the second argument is 1, the second BMessage that has the
+what code provided is returned, etc. If no match is found, NULL is returned.
+
+Lock 1: The Lock() member function blocks until this thread can acquire exclusive
+access to the BMessageQueue. Only one thread can hold the lock at any one time. A thread can
+acquire the Lock() multiple times but release it the same number of times. While a thread holds
+the lock, other threads will not be able to perform AddMessage(), RemoveMessage() or NextMessage().
+Any threads attempting to do so will block until the BMessageQueue is unlocked.
+
+Lock 2: The Lock() member function returns true if the lock has successfully been
+acquired. It will return false if an unrecoverable error has occurred. An example of such an
+error would be deleting the BMessageQueue.
+
+Unlock: The Unlock() member function releases a lock on the BMessageQueue. If the
+thread no longer holds any locks on the BMessageQueue, other threads are free to acquire the
+BMessageQueue lock or call member functions like AddMessage(), RemoveMessage(), NextMessage() or
+delete the BMessageQueue.
+
+Next Message 1: The NextMessage() member function removes the BMessage which is the
+oldest on the queue. It returns that BMessage to the caller. After the call completes, the
+BMessage is no longer on the queue and the next oldest BMessage is at the front of the queue
+(ie next to be returned by NextMessage()).
+
+Next Message 2: BMessage's can be removed using NextMessage() from multiple
+threads at the same time with no risk of queue corruption. Similarly, AddMessage() or
+RemoveMessage() can be executing from another thread while a NextMessage() is started without
+corrupting the queue. A NextMessage() attempt will block if another thread has used the Lock()
+member to lock the BMessageQueue.
+
+
+
+BMessageQueue Implementation:
+
+Internally, the BMessageQueue uses a BLocker to ensure that member functions like AddMessage(),
+RemoveMessage() and NextMessage() do not corrupt the queue when used from multiple threads. The
+same BLocker is used to implemented the Lock() and Unlock() members.
+
+Testing with a debugger shows that the queue is implemented using a "link" pointer in the
+BMessage class itself. Each BMessage is also a singly linked list which represents the queue.
+All the BMessageQueue needs is a pointer to the BMessage which starts the list. For performance
+reasons, it is worth maintaining a pointer to the BMessage at the end of the list and the count
+of the number of elements in the list. If these are not maintained, adding an element to the
+list will get slower as the number of elements grows and the cost to determine the number of
+elements in the list will be high.
+
+Because the BMessageQueue uses the link pointer which is a private part of the BMessage class,
+the BMessageQueue must be a friend class of BMessage. Checking the headers, this is in fact the
+case in Be's implementation. Although friendship in classes can cause some pretty serious long
+term headaches if abused (and I am not convinced that this is an abuse), the OpenBeOS
+implementation will follow the same implementation for now.
+
+
+
+
diff --git a/docs/develop/app/usecases/PortLinkUseCases.htm b/docs/develop/app/usecases/PortLinkUseCases.htm
new file mode 100644
index 0000000000..84bb66a0ef
--- /dev/null
+++ b/docs/develop/app/usecases/PortLinkUseCases.htm
@@ -0,0 +1,48 @@
+
+
+PortLink Use Cases and Implementation Details
+
+
+
+
+
+
+PortLink Use Cases:
+
+This document describes the PortLink interface and some basics of how it is implemented.
+The document has the following sections:
+
+
+- PortLink Interface
+- PortLink Use Cases
+
+
+PortLink Interface:
+The PortLink class is a lightweight class designed to ease the pain of sending a message to a port. Normal use boils down to creating a PortLink object, setting the message code, attaching any extra data via Attach(), and calling Flush() to send it.
+
+While this class is designed to facilitate port-based messaging, it does not devise any protocols for such. The recipient will need to know if data is included in a message, for example. Likewise, all extra data must be freed by the recipient.
+
+
+PortLink Use Cases:
+The following use cases cover the PortLink functionality:
+
+
+Construction: A PortLink is created by passing it a port ID. Error-checking is not performed on the port itself, so be sure it is a valid port.
+
+
+Destruction: When a PortLink is destroyed, any data which is currently attached to a pending message is freed.
+
+Creating a message: Creating a message can be as simple as setting the message code (similar to BMessage's what member). Extra data is not required.
+
+Attaching Data: Adding extra data is as simple as calling the member function Attach(), which makes a copy of the parameter passed to it.
+
+Sending a message: Call Flush(). Whatever opcode has been set will be sent to the target. Optionally, a timeout (in microseconds) of type bigtime_t can be specified. This can be useful in preventing deadlocks if the target has crashed and its port fills up.
+
+Synchronous Messaging: This one requires a little more care in order to prevent deadlocks. Attachments may be used as with Flush(), but FlushWithReply() will wait until the target replies unless a timeout value is specified in microseconds of type bigtime_t. A return code of B_ERROR indicates an internal data error and your message is intact. If a reply times out, it will return B_TIMED_OUT. Otherwise, it returns B_OK.
+
+Reply Protocol: The target will receive the message with all attached data with one slight modification to the otherwise chosen message protocol - the first item will be a port_id which is the port to which the sender is to reply. All other attached data (if any) immediately follows this port id.
+
+
+HTML Documentation Format by Jeremy Rand
+
+
diff --git a/docs/develop/befs/resources.html b/docs/develop/befs/resources.html
new file mode 100644
index 0000000000..c2d7f48960
--- /dev/null
+++ b/docs/develop/befs/resources.html
@@ -0,0 +1,54 @@
+
+
+ Documentation and Resources for writing BeOS File Systems
+
+
+
+
+Hints for BeOS File System Authors
+
+Besides the example DOS file system that comes with the BeOS developers
+stuff, there's also a CD-ROM file system example. If you installed the
+optional stuff on the BeOS 5.0 Pro CD-ROM (or the developer's kit from the free
+site), it's at: /boot/optional/sample-code/add-ons/iso9660
+
+
On BeBits you can get source code
+examples from a few programs, such as AtheOS FS (app 2028 on BeBits). There used to
+be a copy of NTFS too with source (app
+620 on BeBits), but the site seems to be down. There are also other file
+systems there, but source is not included (some have it available on request).
+
+
Another useful source of information is the BeOS developer library
+web site. It has some articles on file systems, the most relevant being
+the One
+File Network File System, which shows one way of combining a user space
+program with a kernel file system stub. Another good one is about
+the FSP (file system protocol). The prior issue describes what features
+the BFS supports. There are lots of other tangentially related articles,
+such as ones on device drivers, programming in kernel mode, debugging, etc.
+
+
There's also the very good Practical File System Design book
+by Dominic Giampaolo, from Morgan Kaufmann
+Publishers, read their catalog
+entry for more info about the book.
+
+
Finally, there's Alexander G.
+M. Smith's ongoing documentation of the file system API, condensed from all
+these sources and from his continuing experiences with trying to write a RAM
+file system. You can get the StyledEdit text file with the October
+18 2001 version or check the BeOS directory on his site
+for newer versions.
+
+
Last updated November 11, 2001 by AGMS.
+
+
+
diff --git a/docs/develop/drivesetup/DesDoc.txt b/docs/develop/drivesetup/DesDoc.txt
new file mode 100644
index 0000000000..86fcac0a02
--- /dev/null
+++ b/docs/develop/drivesetup/DesDoc.txt
@@ -0,0 +1,165 @@
+Drive Setup Design Document
+
+Contents
+--------
+1 General
+2 Display View
+3 Menus
+3.1 Mount
+3.2 Unmount
+3.3 Setup
+3.4 Options
+3.5 Rescan
+4 Partition View
+4.1 Intel
+4.2 Apple
+
+1: General
+----------
+
+ - When the app starts up, it pops up a dialog while scanning for devices.
+ - The window is resizeable.
+ - There doesn't seem to be any way to get the information that I need
+ easily: I suspect that some direct reading of the partition map is
+ needed. For now, a fake struct with the info I need will suffice.
+
+2: Display View
+---------------
+
+The display view displays information about the drives that the system knows
+about. The following information is shown:
+ - Device: Where the device is mounted on the system. For example, my floppy
+ drive is at /dev/disk/floppy.
+ - Map Style: Either apple or intel, depending on which type the media is.
+ - Partition type: Empty for a drive.
+ - File System: Comma seperated list of the File Systems on the selected
+ device.
+ - Volume Name: Comma seperated list of the Volume Names of the partitions on
+ the selected device.
+ - Mounted At: Comma seperated list of the mount points of the partitions on
+ the selected device.
+ - Size: Total size of the media at the selected device.
+Selecting a drop down arrow on a device shows a list of partitions on the media
+in the device. The following information is shown:
+ - Device: Empty for a partition.
+ - Map Style: Empty for a partition.
+ - Partition type: The type of the partition.
+ - File System: The file system on that partition.
+ - Volume Name: The name of the partition.
+ - Mounted At: The mount point of the partition.
+ - Size: The size of the partition.
+
+3: Menus
+--------
+
+Mount
+ - Only available when there is a partition available to mount on the selected
+ drive.
+
+ *Mount All Partitions
+ - Shortcut: Alt-M
+ - Action: Mounts all unmounted partitions on the selected drive.
+
+ *[List of partitions on the selected drive, with mounted partitions greyed
+ out and unmounted partitions selectable]
+ - Action: Mounts the selected partition on the selected drive.
+
+Unmount
+ - Only available when there is a mounted partition on the selected drive.
+
+ *[List of mounted partitions on the selected drive, with all mounted partitions
+ selectable except /boot]
+ - Action: Unmounts the selected partition.
+
+Setup
+ - Only available when the selected drive has valid media in it: example, a
+ hard drive, or a floppy drive with a disk in.
+
+ *Format
+ - Shortcut: Alt-F
+ - Action: Formats the drive.
+
+ *Partition
+ - Action: Opens sub menu.
+
+ *apple...
+ - Action: Allows partitioning of apple hard drives, using an apple-like
+ interface.
+
+ *intel...
+ - Action: Allows partitioning of intel hard drives.
+
+ *Initialize
+ - Action: Opens sub menu.
+
+ *[List of partitions on the selected drive, with unmounted partitions
+ selectable]
+ - Action: Opens sub menu.
+
+ *[List of supported formats to initialize the drive to.]
+ - Current list of formats:
+ - Be File System...
+ - cdda...
+ - cifs...
+ - DOS/FAT...
+ - ext2...
+ - Mac HFS...
+ - iso9660...
+ - NTFS...
+ - Old Be File System...
+ - uspacefs...
+ - Possibly this section should be dynamically created, with initializing
+ code done in a plug-in type way, so other formats can be easily added.
+ - Action: Initializes the selected partition.
+
+Options
+ - Only available when the selected drive has valid media in it: example, a
+ hard drive, or a floppy drive with a disk in.
+
+ *Eject
+ - Only available if the selected drive has removable media.
+ - Shortcut: Alt-E
+ - Action: Ejects the media.
+
+ *Surface Test
+ - Shortcut: Alt-T
+ - Action: Performs a surface test on the media.
+
+Rescan
+
+ *IDE
+ - Action: Rescans the IDE chain for new media/devices/whatever.
+
+ *SCSI
+ - Action: Rescans the SCSI chain for new media/devices/whatever.
+
+Context Sensitive Right Click Menu
+ - Available by right clicking on a drive in the display view.
+ - Allows access to the Mount, Unmount, Setup, and Options menus, with the
+ same "selectability" as above - if the menu is not selectable on the main'
+ menu bar, it is not selectable on this context menu.
+
+4: Partition View
+-----------------
+
+ - The partition view is brought up when "Partition" is chose from the Setup
+ menu.
+ - If the selected drive has partitions that are currently mounted, a dialog
+ is brought up explaining that the partition map can not be modified, only
+ viewed, and offering a choice to cancel or proceed. If the user proceeds,
+ all of the UI components are set to an inactive state, except for the
+ Cancel and Ok buttons.
+
+Intel
+ - The top part of the view shows the device path.
+ - The middle section of the view shows the partitions, the type (in a text
+ box), a readable explanation of the type number in a drop down menu, and
+ a checkbox indicating the state of the Active flag.
+ - The bottom section of the view consists of a slide bar for each partition,
+ allowing the user to set the size of the partitions. Each slide bar can
+ be locked or unlocked, which disallows or allows movement of the slide bar.
+ - The button actions are Revert, Cancel, and Ok.
+
+Apple
+ - (I have no apple partitions available, help needed!!)
+
\ No newline at end of file
diff --git a/docs/develop/drivesetup/todo.txt b/docs/develop/drivesetup/todo.txt
new file mode 100644
index 0000000000..bf262b3688
--- /dev/null
+++ b/docs/develop/drivesetup/todo.txt
@@ -0,0 +1,5 @@
+TODO:
+
+ * make the unmount menu build off of the selected drive,
+ rather than all mounted partitions
+
diff --git a/docs/develop/fontprefs/readme b/docs/develop/fontprefs/readme
new file mode 100644
index 0000000000..fb8629b66f
--- /dev/null
+++ b/docs/develop/fontprefs/readme
@@ -0,0 +1,16 @@
+Font Pref App
+
+ISSUES
+
+* Rescanning fonts causes the bold font to lose its boldness.
+* Fixed width font selector should only show fixed width fonts
+
+TODO
+
+* When a style is selected, the font menu label needs to be updated to reflect this
+* make a cache panel function that updates the slider labels with an int as a parameter
+* Add the VMSettings code so that the panel uses the settings file for position/size
+
+Matt McMinn
+melfinadev@earthlink.net
+
diff --git a/docs/develop/fontprefs/readme.xml b/docs/develop/fontprefs/readme.xml
new file mode 100644
index 0000000000..fc5f6871c0
--- /dev/null
+++ b/docs/develop/fontprefs/readme.xml
@@ -0,0 +1,112 @@
+
+
+ Fonts
+
+ 0.8
+
+
+
+ Matt McMinn
+ melfinadev@earthlink.net
+ http://home.earthlink.net/~melfina/
+
+
+
+
+
+ It's just a copy of the fonts preferences app that comes with BeOS.
+
+
+
+
+
+
+
+ 1
+
+
+ Rescanning fonts causes the bold font to lose its boldness.
+
+
+
+
+
+
+
+ 2
+
+
+ Fixed width font selector should only show fixed width fonts.
+
+
+
+
+
+
+ Should be relatively easy - just filter the fonts.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ 0.9
+
+
+ When a style is selected, the font menu label needs to be
+ updated to reflect this.
+
+
+
+
+
+
+
+ 2
+ 0.9
+
+
+ Make a cache panel function that updates the slider labels with
+ an int as a parameter.
+
+
+
+
+
+
+
+ 3
+ 0.9
+
+
+ Add the VMSettings code so that the panel uses the settings
+ file for position/size.
+
+
+
+
+
+
+
+ 4
+ 0.9
+
+
+ Update the default fonts on close.
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/develop/ikteam/BinCompat.html b/docs/develop/ikteam/BinCompat.html
new file mode 100644
index 0000000000..6048e871c8
--- /dev/null
+++ b/docs/develop/ikteam/BinCompat.html
@@ -0,0 +1,181 @@
+
+
+ Maintaining Binary Compatibility
+
+
+Binary Compatibility in 3 Easy Steps!
+
+An Introduction
+In the early days of the OpenBeOS project, a debate raged concerning one of the projects
+primary goals: maintaining binary compatibility with BeOS R5. The idea was that the
+only way an effort to rewrite BeOS would be successful was if folks could continue
+running the apps they already had. Certainly, a lot of software available for BeOS is
+open source or actively maintained -- these apps could just be recompiled if necessary.
+Others -- PostMaster, gobe's Productive suite and a few other crucial apps -- weren't
+likely to get rebuilt, either because the original author had stopped maintainance
+without being kind enough to release the source, or because it just wouldn't be
+commercially feasible.
+Some said that we were crazy; that it couldn't be done. Thankfully, cooler heads
+prevailed and we're well on our way to a binary compatible clone of R5.
+
+"But wait!" you cry. "How did the cooler heads which prevailed know that the holy grail
+of binary compatibility was achievable?" I'm so glad you asked! Keeping reading and be
+enlightened, Grasshopper.
+
+
The Issues
+There are three basic issues that have to be addressed to ensure binary compatibility:
+
+ -
+ Names must be identical
+ This includes class and structure names as well as public, protected and global
+ function and variable names.
+
+ -
+ Object sizes must be identical
+ Classes must contain the same number of bytes of data; global variables must
+ be the same size. Maybe BGlobalVar should've been an int32
+ instead of an int16, but we're stuck with it now.
+
+ -
+ Virtual function table layout must be identical
+ The most cryptic and confusing aspect of maintaining binary compatibility.
+ The issue essentially boils down to this: for any given class, there must
+ be the same number of virtual functions, declared in the same order as the
+ original.
+
+
+
+The Nitty Gritty
+"Good grief!" you say. "How on earth do I keep all this stuff straight?" Ah,
+Grasshopper, it is easier that you might imagine. Just follow these steps, and you
+should be binary compatible in no time!
+
+ -
+ Make a copy of the appropriate Be header file
+ This is now your header file. You may need to change a thing or two, but what
+ you can (or will need to) change is quite limited, and discussed below.
+
+ -
+ Implement public, protected and virtual functions
+ In the course of doing this, you may discover that there are some private
+ non-virtual function declarations that you just don't use. Feel free to axe
+ them! Since they're private, nobody using the class will miss them, and
+ because they're not virtual, they don't effect the vtable layout. Conversely,
+ if you find a need to add some private, non-virtual functions, go right ahead
+ (for the very same reasons).
+
+ -
+ Make sure you don't change the number of bytes used for data
+ There are two situations that can make this seem difficult. First, there
+ may be data members that you don't use in your reimplementation. You can
+ just leave them (safe, but a little messy) or you can add the extra members'
+ bytes to the class's "unused" data array. An example will make this clear.
+ Let's say we have a class BFoo:
+
+
+ class BFoo {
+ public:
+ BFoo();
+ void SomeFunc();
+ private:
+ int32 fBar;
+ char fZig;
+ int32 fQux;
+ int32 fUnused[2];
+ };
+
+
+ The Be engineers that originally wrote this BFoo purposely added some data
+ padding in the form of an array of 2 int32s (they did this with
+ most classes in the API). Now let's suppose in your implementation, you
+ really didn't need fQux. You can add fQux's bytes
+ into fUnused:
+
+
+ class BFoo
+ {
+ ...
+ private:
+ int32 fBar;
+ char fZig;
+ int32 fUnused[3];
+ };
+
+
+ Nothing could be easier! An additional twist that should be noted is that
+ data member order must also be preserved. In much the same way as existing
+ apps will "look" for virtual functions in a specific place in the vtable,
+ so will they "look" for data members in a specific place in an object.
+ "But what if I don't need fZig, either?" you wonder. "It's only
+ one byte, not four like an int32!" Have no fear! Just rename it
+ "fUnusedChar" and be done with it.
+
+ The second situation that can make preserving object size tricky is if there
+ aren't enough bytes of data available. Building on our cheesy BFoo
+ example, let's suppose that rather than getting rid of fQux and
+ fZig, you actually needed to add another 4
+ int32s worth of data: fNewData1 through
+ fNewData4. The original implementation of BFoo has two extra
+ int32s which we can use, but that leaves us two int32s
+ short. What to do? The easiest thing to do is create a data structure to hold
+ your new data and convert one of the fUnused items into a pointer
+ to that structure:
+
+
+ // Foo.h
+ struct _BFooData_;
+ class BFoo
+ {
+ public:
+ BFoo();
+ ~BFoo();
+ void SomeFunc();
+ private:
+ int32 fBar;
+ char fZig;
+ _BFooData_* fNewData;
+ int32 fUnused[1];
+ };
+
+ // Foo.cpp
+ struct _BFooData_
+ {
+ int32 fNewData1;
+ int32 fNewData2;
+ int32 fNewData3;
+ int32 fNewData4;
+ };
+ BFoo::BFoo()
+ {
+ fNewData = new _BFooData_;
+ }
+ BFoo::~BFoo()
+ {
+ delete fNewData;
+ }
+
+
+ Voila! More data without making the class bigger. Notice the added
+ destructor; make sure you're cleaning up your new (dynamically allocated) data.
+
+
+
+ And there you have it: Binary Compatibility in 3 Easy Steps!
+ Questions, comments, or corrections? Please let
+ me know!
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
diff --git a/docs/develop/ikteam/IK_Process.html b/docs/develop/ikteam/IK_Process.html
new file mode 100644
index 0000000000..b780536848
--- /dev/null
+++ b/docs/develop/ikteam/IK_Process.html
@@ -0,0 +1,140 @@
+
+Interface Kit Team Process
+
+Interface Kit Team Process
+
+This paper deals with the set of requirements for reimplementing any portion of the BeOS
+covered by the Interface Kit team's charter; namely, the Interface Kit, the Application
+Kit, the app_server, and related preferences applets. This team's resposibilities
+may broaden later to include more areas of the OS which are related (the input_server
+comes to mind as a possibility). Since the mandate of the group covers such a
+large and public (from a 3rd party developer's perspective) portion of BeOS -- a portion
+that is central to the user and developer experience of BeOS -- it is vital that our work
+be done in a scrupulously documented and tested fashion. This paper lays out the
+process which, when adhered to, aims to ensure this high standard of documentation and
+testability.
+
+First, a definition of "module" as it pertains to this paper.
+
+Module:
+A function, class, kit, application or related set of functions, classes, kits or
+applications is refered to as a "module" in this paper, the implication being that
+there can be modules within modules. A module is any specifiable and testable
+entity -- which may or may not rely on other modules to accomplish its functionality.
+
+
+Process Requirements
+
+
+
+Each module in this project shall have the following items:
+
+ - Complete interface specification. For kits, this will mostly come
+ from the BeBook, but in many cases the specification will have to elaborate
+ on what the BeBook provides or even be created entirely (app_server internals
+ are a good example).
+ - Complete use case specification. For those not familiar with use cases,
+ they consist of the following:
+
+ - A list of ways in which a module is expected to be used
+ - Sublists of assumptions/prerequisites for each of those cases.
+ This should include items such as state of an object instance at the
+ time of method invocation, the state of parameters passed to functions,
+ etc.
+ - Sublists of error conditions and handling for each case where
+ assumptions/prerequisites are not properly met. This list should
+ not attempt to be all inclusive: circumstances that do not
+ directly bear upon the assumptions/prerequisites do not need to be
+ considered unless clearly necessary.
+
+ - A set of unit tests which verify that the module performs correctly in expected
+ use cases as well as under error conditions as described in the use case
+ specification.
+ - A plain-english discussion of how the module implements its functionality:
+ what algorithms are to be used, what other modules are relied upon, the general
+ design rationale, execution flow, etc.
+ - The actual reimplementation.
+
+
+Each of the above items is to be completed roughly in the order listed. In other
+words, a given module should have a complete interface specification, etc., before it is
+reimplemented. Prototyping is encouraged, of course. For existing APIs, the
+recommended course is to write the interface spec, use case spec and unit tests to the
+API. Unit tests, in particular, should perform as expected when run against the
+existing API. When they do not, changes may need to be made to the specifications.
+ Our goal is to reimplement the APIs as they are, not necessarily as they're
+documented -- and then ensure that the docs accurately reflect the reimplementation.
+ Thorough testing of the existing implementation will show us where the
+documentation is wrong, misleading or absent, thereby helping to ensure that our
+reimplementation is functionaly identical to the existing one.
+
+
+CppTest
+is the test framework we will be using. By using this framework for all our unit
+tests, we can easily build large test suites which will verify the codebase in a single
+executed run. An excellent short discussion of the value of unit tests is here:
+
+
+http://www.extremeprogramming.org/rules/unittests.html
+
+
+A Suggestion
+
+
+
+Although the interface specification for each module should be completed first, I have a
+suggestion for how to proceed from there which should make the remainder of the process
+less boring. Rather than following the interface specification with a full set of
+use cases followed by a full set of tests, a more productive and enjoyable way to go is
+to take each module in turn, write one of the use cases/error conditions for it and
+immediately write the test for that use case/error condition. This will break up
+the tedious process of specifying all the use cases and error conditions with a bit of
+coding -- not implementation code, but code nonetheless.
+
+
+Some Final Thoughts
+
+
+
+This process is a very rigorous approach to take. Given that our goal is to produce
+the most stable, robust and professional desktop operating system available, this sort of
+thoroughness is justifiable and necessary. Our understanding of the system will be
+greatly increased and the task of coming up to speed on the system will be made much
+easier for outsiders and newcomers to the project.
+
+This approach is also not the most "fun": sitting down and hacking out code has the
+attraction of instant gratification that design work does not. It is important to
+understand, however, that proper design work done up front makes the task of
+implementation easier, the chore of integration much less onerous and testing and
+code verification a snap. Provided we do not get locked in "analysis paralysis"
+and attack the design work as vigorously as the coding work, the entire project will
+actually move more quickly -- usually quite a bit more quickly -- than if we had simply
+started coding. Thrown away versions of the codebase should be just that:
+ quick prototypes intended to be disposable, rather than full-blown implementation
+attempts which fail or are mysterious blackboxes because we don't really understand the
+module. Following this process makes it far more likely that when we sit down to
+do a module implementation, the first try will be the last (bug fixes not withstanding,
+of course ;).
+
+To ensure the process is followed and we produce the highest quality code we can, code
+will not be accepted for release until all of the process items are covered. If
+this seems like a hardline stance to take, remember: every single app which
+utilizes the Application and Interface Kits relies on our code to be rock solid --
+totally predictable and completely reliable. Let's strive to be engineers, not
+h4X0rz.
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
\ No newline at end of file
diff --git a/docs/develop/ikteam/UnitTestingInfo.html b/docs/develop/ikteam/UnitTestingInfo.html
new file mode 100644
index 0000000000..c5d246eb3a
--- /dev/null
+++ b/docs/develop/ikteam/UnitTestingInfo.html
@@ -0,0 +1,391 @@
+
+
+
+Unit Testing Information
+
+
+
+
+
+Unit Testing Information:
+
+This document describes the "why's" and "how's" of unit testing for the AppKit team of the
+OpenBeOS project. Although it is intended for the AppKit team, there is no reason other teams
+couldn't use this information to develop a similar unit testing strategy.
+
+The document has the following sections:
+
+
+- What is unit testing?
+- Why is unit testing important?
+- When should I write my unit tests?
+- What kinds of tests should be in a unit test?
+- What framework is being used to do unit testing for the AppKit?
+- What AppKit specific modifications have been made to this framework?
+- What framework modifications might be required in the future?
+- How do I build the framework and current tests for the AppKit?
+- How do I run tests?
+- How do I write tests for my component?
+- Are there example tests to base mine on?
+- How do I write a test with multiple threads?
+
+
+What is unit testing?
+
+Unit testing is the process of showing that a part of a software system works as far as the
+requirements created for that part of the system. Unit testing is best if it has the following
+characteristics:
+
+
+- The software component is tested in isolation with as little interaction with other software
+components as possible.
+- The software component is tested using automated tools so that unit tests can be run with
+every build of the software if required.
+- All requirements of the software component are tested as part of the unit tests.
+
+
+Unit testing is not the only type of testing but is definitely a very important part of any
+testing strategy. Following unit testing, software should go through "integration testing" to
+show that the components work as expected when put together.
+
+Why is unit testing important?
+
+A basic concept of software engineering is that the cost of fixing a bug goes up by a factor
+of 2-10x (depending on the source of the information) the later in the development process it is
+found. Unit testing is critical to finding implementation bugs within a particular component as
+quickly as possible.
+
+Unit testing will also help to find requirements problems also. If you write the requirements
+(or use cases) for your component from the BeBook, hopefully the BeBook and your use cases will
+match the actual Be implementation. A good way to confirm that the BeBook documentation matches
+Be's implementation is to write your unit tests and run them against the original Be code.
+
+Unit tests will also continue to be maintained and run in the future also. As the mailing
+lists obviously show, many people are looking forward to OpenBeOS post-R1 when new features
+will be introduced above and beyond BeOS R5. These unit tests will be critical to ensuring that
+any new feature or even just a bug fix doesn't break existing functionality.
+
+Speaking of bug fixes, consider adding unit tests for any bugs you identify that slipped
+through your original unit test suite. This will ensure that this bug or a similar one is not
+re-introduced in the future.
+
+Finally, unit testing is not the be all, end all of testing. As mentioned above, integration
+testing must be done to show that software components work together. If all unit tests cover
+all requirements and have run successfully against all components, then a failure has to be
+due to a bug in the interaction of two or more known working software components.
+
+When should I write my unit tests?
+
+As the AppKit process document describes the recommended order for implementing a component
+is:
+
+
+- Write an interface specification
+- Write the use case specifications
+- Write the unit tests
+- Write an implementation plan
+- Write the code
+
+
+Please see the AppKit process document for more details about the entire sequence. The unit
+test are to be written once the use cases are written and before any implementation work is
+done. The use cases must be done because they determine what the tests will be. You need to
+write as many tests are required so that all use cases for that component are tested. The use
+cases should be detailed enough that you can write your unit tests from them.
+
+The unit tests are to be done before implementation for a very good reason. You should be able
+to run these unit tests against the Be implementation and confirm that they all pass. If they do
+not pass, then either there is a bug in the unit test itself or you have found a difference
+between your use cases and the actual implementation. Even if your use cases match the BeBook,
+if that is not how the actual Be implementation works, we must match the current implementation and
+not the BeBook. You should go back and modify the use case. Change the use case so that it
+matches Be's implementation and consider adding a note indicating this doesn't match the
+BeBook.
+
+Imagine if you completed the implementation and then wrote and ran the unit tests. If you run
+the tests against your implementation and Be's implementation, you will notice the test passes
+for your code but fails on Be's. At this point, you will have to change the implementation, change
+the unit test and change the use case which is more work that if you write the unit tests before
+the implementation. Worse, if you only ran the unit tests against your implementation and not
+Be's, you may not notice the problem at all.
+
+What kinds of tests should be in a unit test?
+
+The unit tests you write should cover all the functionality of your software module. That
+means your unit tests should include:
+
+
+- All standard expected functionality of the software component
+- All error conditions handled by the software component
+- Interaction with software components which cannot be decoupled from the target software
+component
+- Concurrency tests to show that a software component which is expected to be thread safe (most
+things are under BeOS) is safe and free from deadlocks.
+
+
+What framework is being used to do unit testing for the AppKit?
+
+The AppKit team has chosen to use CppUnit version 1.5 as the basis of all of our unit tests.
+This framework provides very useful features and ensures that all unit tests for AppKit code
+are consistent and can be executed from a single environment.
+
+There are two key components to the framework. First, there is a library called libCppUnit.so
+which provides all the C++ classes for defining your own testcases. Secondly, there is an
+executable called "TestRunner" which is capable of executing a set of testcases.
+
+For more information on CppUnit, please refer to
+this website
+
+
What AppKit specific modifications have been made to this framework?
+
+The following are the modifications that have been introduced into the CppUnit v1.5
+framework:
+
+
+- A makefile has been added for the library and the TestRunner.
+- Some "bugs" in CppUnit v1.5 which lead to it not compiling under BeOS v5.
+- The TestRunner has been modified to support BeOS based addons. Each test which you can
+select from the TestRunner is found in the "add-ons" directory at runtime. The original
+TestRunner required you to change the TestRunner when new tests were added to it.
+- Changed the output from TestRunner. The output includes a name of the test being run and
+a run time for the test in microseconds.
+- Changed the arguments of the assert functions in the TestCase class from std::string to
+const char *'s due to apparent concurrency problems with std::string under BeOS when testing
+threaded tests.
+- Added locking to the TestResults class so that multiple threads can safely add result
+information at the same time for a single test.
+- The ThreadedTestCaller class was written to allow us to write tests which contain multiple
+threads. This is an important class because many BeOS components are thread safe and we need
+to confirm that the OpenBeOS implementation is also thread safe.
+
+
+This is the list of the important modifications done to CppUnit v1.5 at the time this document
+is being written. For the latest information about modifications to CppUnit, check the code
+which can be found in the OpenBeOS CVS repository.
+
+What framework modifications might be required in the future?
+
+This framework will have to evolve as our needs grow. The main issues I think we need to
+solve are:
+
+
+- The format of the test name is an encoded string representing the class definition of the
+test class from gcc. It is not a very readable format but given that the test class is often
+a template class and you would like different names for different instances of the template,
+this seemed the best compromise. Suggestions welcome.
+
+- The threaded test support added into CppUnit forces you to specify the entry point for each
+thread in your test. If you are doing a test with a BLooper or a BWindow, these classes start
+a thread of their own. This thread will not be started through the standard entry point so
+doing "assert's" from one of these threads will not work. Perhaps we need TestBLooper and
+TestBWindow classes which will work with the assert's.
+
+
+If you find you need some other features, feel free to add them to CppUnit.
+
+How do I build the framework and current tests for the AppKit?
+
+As of writing this document, you can build the framework and all the current AppKit tests
+by performing the following steps:
+
+
+
+- Checkout the "app_kit" sources or the entire repository from the OpenBeOS CVS repository.
+There is information at the OpenBeOS site about how to access the CVS repository.
+
+- In a terminal, "cd" into the "app_kit" directory in the CVS files you checked out.
+
+- Type "make".
+
+
+
+Note that the build system for OpenBeOS is moving to jam so these steps may become obsolete.
+When you the make has finished, you should find the following files:
+
+
+
+app_kit/test/CppUnit/TestRunner - this is the executable to use to execute
+tests.
+app_kit/test/CppUnit/lib/libCppUnit.so - this is CppUnit library which your tests
+must link against.
+app_kit/test/CppUnit/lib/libopenbeos.so - this is library which contains OpenBeOS
+implementation of some Be classes (usually found in libbe.so, called libopenbeos.so to avoid a name
+clash at runtime).
+app_kit/test/add-ons/BAutolockTests - this is the addon which contains the tests
+which are run against the Be and OpenBeOS implementation of BAutolock.
+app_kit/test/add-ons/BLockerTests - this is the addon which contains the tests
+which are run against the Be and OpenBeOS implementation of BLocker.
+app_kit/test/add-ons/BMessageQueueTests - this is the addon which contains the tests
+which are run against the Be and OpenBeOS implementation of BMessageQueue.
+
+
+
+These are the key files which ensure that the tests can be run.
+
+How do I run tests?
+
+You have a few different options for how you run a test or a series of tests. Before you start
+however, you must build the code as describe in this section. Once
+it is built, you can run tests any of these ways:
+
+
+- Run "make test" from the app_kit directory. This will lead to all of the tests defined in
+app_kit/test/add-ons directory to be run.
+- From the "app_kit/test" directory, execute the command "CppUnit/TestRunner -all". This will
+lead to all of the tests defined in the app_kit/test/add-ons directory to be run and is the same
+as what happens in the "make" example above. However, recompile any code that has changed in the
+process.
+- From the "app_kit/test" directory, execute the command "CppUnit/TestRunner <TestName>"
+where <TestName> is one of the addons found in the "app_kit/test/add-ons" directory. Only
+the tests defined in that add-on will be run.
+
+
+How do I write tests for my component?
+
+The first step to writing your tests is to develop a plan for how you will test the
+functionality. For ideas of the kinds of tests you may want to consider, you should reference
+this section.
+
+Once you know the kinds of tests you want, you need to:
+
+
+
+For every test you want, define a class which derives from the "TestCase" class in the
+CppUnit framework.
+
+Within each test class you define, create a "void setUp(void)" and "void tearDown(void)"
+member function if required. If before executing your test, you need to perform some actions,
+put those actions in the "setUp()" member. If you need to cleanup after your test, put those
+actions in the "tearDown()" member.
+
+Within each test class you define, create a member function which takes "void" and
+returns "void". Within this member function, write the code to execute the test. Whenever you
+want to ensure that some condition is true during your test, add a line within the member function
+that looks like "assert(condition)". For example, if the variable "result" must have the value
+B_OK at a particular point in your test, you should add a line which reads
+"assert(result = B_OK)".
+
+Create a constructor for all of your test classes that takes a "std::string name" argument
+and pass that onto the TestCase parent class. Add whatever actions you need to take in the
+constructor.
+
+Create a destructor for all of your test classes and take whatever actions are
+appropriate.
+
+Within each test class you define, create a member with the signature
+"static Test *suite(void)". For a simple test where only one test needs to be run for this class,
+the contents of this member should look like:
+
+
+return(new TestCaller<ClassName>("", &ClassName::MemberName));
+
+
+Replace "ClassName" with the name of your test class and "MemberName" with the name
+of the member function you defined your test in. If you need to define more than one test to run
+from this class, refer to instructions below on how to use the TestSuite class of CppUnit. If you
+are creating a threaded test, refer to this section.
+
+Create one ".cpp" file for defining the "addonTestFunc()" function. This function must
+exist in global scope within your test addon. The contents of this ".cpp" file will look something
+like:
+
+
+#include "TestAddon.h"
+
+Test *addonTestFunc(void)
+{
+ TestSuite *testSuite = new TestSuite("<TestSuiteName>");
+
+ testSuite->addTest(<ClassName1>::suite());
+ testSuite->addTest(<ClassName2>::suite());
+ /* etc */
+
+ return(testSuite);
+}
+
+
+In the above example, replace <TestSuiteName> with an appropriate name for the group of
+tests and <ClassName1> and <ClassName2> with the names of the test classes you have
+defined.
+
+Create a build system around a BeIDE project, Makefile or preferrably a jam file which
+builds all the necessary code you have written into an addon.
+
+Put this addon into the app_kit/test/add-ons directory and follow the above instructions
+for how to run your tests.
+
+
+
+Are there example tests to base mine on?
+
+There are example tests which you can find in the following directories:
+
+
+app_kit/test/lib/application/BMessageQueue
+app_kit/test/lib/support/BAutolock
+app_kit/test/lib/support/BLocker
+
+
+There are some things done in these tests which make things a bit more complex, but you may
+want to do similar things:
+
+
+
+- Most tests use a ThreadedTestCaller class even in some situations when there aren't actually
+more than one thread in the test.
+
+- All tests are defined as a template class. The test class is a template of the class to test
+(if that makes sense to you). For example, to test both the Be and OpenBeOS BLocker and not
+end up with a symbol conflict, the OpenBeOS implementation of BLocker is actually in a namespace
+called "OpenBeOS". So, the tests must be run against the classes "::BLocker" and
+"OpenBeOS::BLocker". The easiest way to do this was to make the class to be tested a template
+and define it for both "::BLocker" and "OpenBeOS::BLocker".
+
+
+
+Even with the complexity, I think this code provides a pretty good example of how to write
+your tests.
+
+How do I write a test with multiple threads?
+
+If you have a test which you want to define that requires more than one thread of execution
+(most likely a concurrency test of you code), you need to use the ThreadedTestCaller class.
+The steps which differ from the above description on how to write a test case are:
+
+
+
+In your test class, define a member function for each thread you will be starting. All of
+these member functions must take "void" and return "void". If all the threads in your test
+perform the exact same actions, it is OK to just define one member function. Usually in the
+tests I have written, I have called these member functions "TestThread1()", "TestThread2()",
+etc.
+
+If your "static Test *suite()" function for your test class, you must return a
+ThreadedTestCaller. Imagine that the test class name is "MyTestClass" and you want two threads
+which run member functions "TestThread1()" and "TestThread2()". That code would look like:
+
+
+Test *MyTestClass::suite(void)
+{
+ MyTestClass *theTest = new MyTestClass("");
+ ThreadedTestCaller<MyTestClass> *threadedTest = new TreadedTestCaller<MyTestClass>("", theTest);
+
+ threadedTest->addThread(":Thread1", &MyTestClass::TestThread1);
+ threadedTest->addThread(":Thread2", &MyTestClass::TestThread2);
+
+ return(threadedTest);
+}
+
+
+If you need to, you can put a number of ThreadedTestCaller instances into a TestSuite and return
+them in the suite() member function. Examples of this can be found in the BLocker and
+BMessageQueue test examples.
+
+
+
+Otherwise the steps are the same as for other tests. The code gets much more complex if you
+define your test classes as templates as the examples do.
+
+
+
+
diff --git a/docs/develop/ikteam/images/Check.gif b/docs/develop/ikteam/images/Check.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e0be2405b94359a53dc6a1aa6f9b0e64efab2914
GIT binary patch
literal 925
zcmZvbO=uHQ6opTzg(w;kijY!4h3Tp;GT^_d6+~yE=oC$|^Ct@t2aEW!DC1@pB|;Yy
z9dSe#p;obFfF|9LK*~64gP}ELtI9*=DKm;)bNuN)hDjo`z^uN{9xcWWcZ&CQHyjVFoec
z940zsg3)1@{>(*o>X0kBMu8O#9c&KemIYR97DN>LZScqW__EEOUFB?=Z?PTR~F
z9MULcc1TRZi^GY*YJ`xW1VPuOZPPHQX_RG3QVH+?2e1GEDDY8ML6B~d_8bkDTAp&2QkqD6Fdd{Ur~(NEQM#l}8l*dlg_VGaLRk%qadS%4%4I=^^Dn
zwU7{qDrHzisRYl1t1&M#yOdU0U@i+brwwK_4#^Y}J5UywOV_4t
z(9o#KlqE`KSSZk)rk$ZNL`_icpp;yRg(BTK+AfVewJhcIa$x^sfn|Y}VPSD`aejV&
zc6N4VW@d77a(sL|olcL8jF_f5FffoxrFwdLR8?(nZ%-r=t*x!mXfzUu)Ya8hR#x&)
zadh;yuIo#Wo&Ir4=DWZ63jMAK00A`kyZ(=;1=hdC+KT2+_eOJ6ZyDuE6+~3l->BY{j&qZ(WY~gU<-(S@ekNU%Fo1bKd!}`UBLhN$)tL@Kv
z8_two?^G-F{w>`-U;2N(AFP(}bKi}cQ!O{E&KaGd09*h7
literal 0
HcmV?d00001
diff --git a/docs/develop/ikteam/images/GoalFlag.gif b/docs/develop/ikteam/images/GoalFlag.gif
new file mode 100644
index 0000000000000000000000000000000000000000..bc06bfccdf1b54c68565b83f8d7bd006292f679a
GIT binary patch
literal 186
zcmZ?wbhEHb6k!ly*v!E29|)dpnKEU{nkfuZsu_}!lA0MnpaD!`5{f@rI5`+N7<52V
zATtF5R&stMZp-?8Zo^K#n*A8K=_5h2<8LR=ov_1I%
literal 0
HcmV?d00001
diff --git a/docs/develop/ikteam/images/Hammer.gif b/docs/develop/ikteam/images/Hammer.gif
new file mode 100644
index 0000000000000000000000000000000000000000..8c091865b9911c86e17344270065e02508845077
GIT binary patch
literal 988
zcmZvbTSyd99L7J>(7+^62<@SZj3wRJEhrQvDsy%vn*!ZHx-C6KLqZ+PmjW
z9`f*$@T4u4wrHByY1*(SclhD^1QQM?Ejl_!RSw9ENsPfYU`JqvA%al+;FQBLi+wty
zDuv9D#2UB(*kv$%5E7Jp&~a#4)OD&VWtozc1YE!dOh5n%yqPIlW7PYoMkxzQA)>}b
zz($z~pMazwpH70-Bz1@CDCGf4F(T%|un{p476>Zv(;+QVCsk4=B_@${;o7iGm;yq9
zvK$r-xDnW4m_Z0Xl;yA(fLjLJ2UCK`hmwNjUFcG><*;_!DNB@6urNhuj8-4@C{;l@M5$&e77}zOX*twKsSZ$%Ee7^K7MK!P3Kr()=VxbU
z$H&Lx@%YHdNPmBSEEenR>@*CcrKKejiPYEEhr{98+S*_+SYBT4_xp>AiV6w}a&mI`
zC(+f_t7+Q8W2blAf_d&Oo;Lo~5K4I({5nR~LKq;X|#Pwv~NXAU$W
z*_Qq_-d%BZ&6js~GOeD98`JTQx{uYp?;5szI6CxJ--Pz>JNEzGd~u@W-gLvO>vQ$p
z`HS^#l)(e->R-1DKxe=J$Z2OZt=|@
zZ?aBLmt0PaKe}I+rwuk7&MeAC+li{^m5%1Kt&Qi=c=FWm-LBE`^49Uy&n{)#PftIN
U&dhYQ?l?Kr-nn*Hb{0zi0qi&Jm;e9(
literal 0
HcmV?d00001
diff --git a/docs/develop/ikteam/images/Help.gif b/docs/develop/ikteam/images/Help.gif
new file mode 100644
index 0000000000000000000000000000000000000000..51c325ead9d077c9c99cfc2dd5b39f8e14466a1a
GIT binary patch
literal 1003
zcmZvbTSyd99LB#Tqv*0l802=rE+ZJexI`CH$sn6uC?-jzhlJLOV8o=;1@@)sf=CZz
zZ7?s@A|XEP5;R@Rp&n9dO{sxx+ApHG<&EEYAr;Q
zLc~L@gK7cIKpAD8ZjQF3nV~*NEk&dh5+33XVggYEVM@{^ZPFxlQey!H1?9nW;0Oo<
z#(Y>zK*iz3;6x$9Fy_Nz1gaKZH5?713`P-_f1z{9=EEW)3bh`p9cTh(Y>rLLu%U
z<{&B%Hj1!_LIFy_^WZoT0){`6cbT&(O=ffs&ZJconB=6(5u0g~JvxQP78C_0DP6iY
zZIh->U87cng-Oa0x@p=yGzIk*YE5&okf+Sim9#T72dSrK1N$EfEDEd$3)9onQ&UqD
z6BF5Nc6fMrU|=AXN+pxYL?Y4E)fJD&J32aIu~>6+b2J*QtE&r#!xa@3p-?Co4DxTj
zx3|x-teMA7|F{|R-Culd{8JJD0;uwL{U1?^J&Q-N;I`O*zjx@$_w2&XMZH6pFMin6
zuny&|Pr8?e(D`H~tcB%kYx4So<9oY;tpEAz&CzFpk6TWv?lYHOv@Z*&*V}KFTb(OH
zi`PdFf4$PVZEfA__sgxC{ta!@^6R_L+4GGj8c(b_`z3pQ^RDyjjvQ*Y9-ev|tQsBo
zmU&!XKXzyLj`joHsx?=#=SNQVRc;;=i&k4QdEr7DH>JFaQ2Jmma_MX>0Sr
gCGzB}yA3z4?W-JbtGQaTI{D_$_Iu`|Kmfb{0bF(Vo&W#<
literal 0
HcmV?d00001
diff --git a/docs/develop/ikteam/images/User.gif b/docs/develop/ikteam/images/User.gif
new file mode 100644
index 0000000000000000000000000000000000000000..36fe2eba80350086b60282b21351c0461df1a1c7
GIT binary patch
literal 987
zcmZvbL1+|L9LB$G7ED@LdWg`(_K?y^1qI#l(5fU@i~4pdVHA^Gdawib;6PAbLD^oW
zf}y9$I*p^0Cah3em{{Woh8>cEY-qN6NGZHh2rsCcHno>B!UEDdQ%6MR$p!Mk693jUYiegd<_uFsaCx^huW#
zq`?+i8ahD|B9xFe>{PKCQ~6wSSrd#5MqmJ4M&cl}AWhg?VX*`~fTW1ffb4AQ3Vg+ZeY3u{yj#xwLM=t_!F8pAJR
zA*E_ER`i$X)+nOQ!2XW~wguLPg^i7k_4W0Ym6he?<$Aq7H#ZkW(e(6m5Cr4nBkFQueOTk
z($j|*uDtV0uJY*opBQJ)kU@UQQs=hXCb`DOt;B&e(`~gN#6p;ZEvAwX
zMJ)E3Omp0JNyIy`NHtZM>JCyLX+(tk-AiZo9?bih;lbnMV_tP%K7aOR6Px&rW#u;~
zzlprQ<@sq{;q=?DIp>~JM{hV*97&dfB|?EJgH54hBoR3CoHz~)`-)n!C%A{uMb&|A
zLklD=(0e*ZW2h9Rq!0@r02N>X4J4>%W^@yp0ac$;Q}l?vfNq73MO#B8XwlEv
zOgW+`i87$5kXfV}ae|1Rbfh5_DM`Tv76G9`WnndRf@BpI3xo_+3L8U5NLFF7i_k&U
zh855)Bn>PAx5-vv5#4}Jg|>yzXeFz#h$0}XkXpnVQPRL777K)cs)Du98c97fcbpn}
z#j)gQX{#a3bLKcP94PiBwO|hoVV>U685%_;DFsCX3p4r&-GHV~r73$9d$+MLr=QY!
znlaUgvb+)YKNi>!*1*E`_4U=&)#c^o#l^+>`T1}-EX(rf=%^@)!^6WY%MK0>(lp)Q
z-;d*XcXv06qMetA0L0s^SpKg*6Ws0XWi<0^yki6{eUOSw)_)V-^SYd
l19@_M_I~}|~JP-nJjs5`r3?T7
literal 0
HcmV?d00001
diff --git a/docs/develop/ikteam/index.html b/docs/develop/ikteam/index.html
new file mode 100644
index 0000000000..46d598bf6c
--- /dev/null
+++ b/docs/develop/ikteam/index.html
@@ -0,0 +1,43 @@
+
+
+ Interface Kit Team Central
+
+
+Welcome to Interface Kit Team Central!
+
+This is the IK Team's public face, where OpenBeOS folk and intrepid members of the
+BeOS community can find such goodies as:
+
+
+With more sure to come.
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
\ No newline at end of file
diff --git a/docs/develop/ikteam/schedule/Discussion.html b/docs/develop/ikteam/schedule/Discussion.html
new file mode 100644
index 0000000000..a308c28025
--- /dev/null
+++ b/docs/develop/ikteam/schedule/Discussion.html
@@ -0,0 +1,71 @@
+
+Schedule Rationale
+
+Schedule Rationale
+Below is an informal discussion of the rationale behind the Interface Kit team's
+behemoth schedule. Various details may not reflect the current form of the schedule,
+but the basic gist is what's really important here.
+
+
+
+First, let me head off the suggestion that we formally split into 3 or 4 stand-alone
+projects: the Interface Kit, Application Kit and app_server are completely
+dependent on one another in a way that no other set of system components is. Each
+without the others can accomplish almost *nothing*; I think the existence of Integration
+highlights this fact.
+
+Each milestone listed has a number of tasks associated with it; these need to be listed
+and the time for each estimated. These tasks should be as fine grained as possible.
+Taking BView as an example, I would expect each method on BView to have its own entry
+under milestones 1, 2, 3, 4 and 8 with entries added as necessary to milestones 18 to
+22. "Why so detailed?" you say. I'm glad you asked. ;)
+
+First off, the finer the schedule's granularity, the more realistic estimate you have for
+the project as a whole. Asked to implement BView, one might be tempted to say "Oh, about
+3 weeks," whereas an estimate of the time needed for each method might yield a total of
+two to three times that. While the more realistic overall estimate may be more depressing
+initially, being able to hit goals on or near the estimated date is much better for
+morale in the long run than constantly being behind because all the estimates were too
+low. Trust me on this, I've worked on *way* too many projects that went south because of
+scheduling that was too broad -- usually because the project manager doesn't want to
+"distress" the client by making them pay for the time to schedule correctly. Or design
+correctly, but that's a different rant. =)
+
+Second, a fine-grained schedule helps to ensure that nothing gets missed. You might
+think it would be hard to forget to implement a BView method, but if you don't expressly
+schedule for that method, there will be no interface, use case or technical specifications
+or unit tests to fail because the method isn't doing anything. In fact, we might not
+notice the missing functionality until some app that uses it dies a horrible death and
+we have to figure out why.
+
+Third, it helps us figure out what functionality is dependent on what -- which helps us
+schedule our tasks in a logical sequence.
+
+Fourth, it makes it much easier for someone that doesn't have a lot of time available or
+much experience to pick something that they can tackle and know that they will be making
+a meaningful contribution. It also makes it easier for us to keep track of who is doing
+what on large items like BView: instead of saying "there's a bunch of stuff on BView
+that needs doing," we can say "BView::StrokeEllipse() needs to be implemented" and know
+that a specific person is responsible for that deliverable.
+
+Fifth, as daunting as a detailed schedule looks like out of the gate, tasks are getting
+completed *constantly* and it's very satisfying to see progress get made on a regular
+basis. Ideally, one would like to be able to check on the progress each week and find
+several items completed since the last time it was checked.
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
\ No newline at end of file
diff --git a/docs/develop/ikteam/schedule/Tasks.xml b/docs/develop/ikteam/schedule/Tasks.xml
new file mode 100644
index 0000000000..2a8bf90bcd
--- /dev/null
+++ b/docs/develop/ikteam/schedule/Tasks.xml
@@ -0,0 +1,7540 @@
+
+
+
+
+
+
+ BInvoker();
+
+
+ BInvoker(BMessage* message, const BHandler* handler, const BLooper* looper = NULL);
+
+
+ BInvoker(BMessage* message, BMessenger target);
+
+
+ virtual ~BInvoker();
+
+
+ virtual status_t SetMessage(BMessage* message);
+
+
+ BMessage* Message() const;
+
+
+ uint32 Command() const;
+
+
+ virtual status_t SetTarget(const BHandler* h, const BLooper* loop = NULL);
+
+
+ virtual status_t SetTarget(BMessenger messenger);
+
+
+ bool IsTargetLocal() const;
+
+
+ BHandler* Target(BLooper** looper = NULL) const;
+
+
+ BMessenger Messenger() const;
+
+
+ virtual status_t SetHandlerForReply(BHandler* handler);
+
+
+ BHandler* HandlerForReply() const;
+
+
+ virtual status_t Invoke(BMessage* msg = NULL);
+
+
+ status_t InvokeNotify(BMessage* msg, uint32 kind = B_CONTROL_INVOKED);
+
+
+ status_t SetTimeout(bigtime_t timeout);
+
+
+ bigtime_t Timeout() const;
+
+
+ uint32 InvokeKind(bool* notify = NULL);
+
+
+ void BeginInvokeNotify(uint32 kind = B_CONTROL_INVOKED);
+
+
+ void EndInvokeNotify();
+
+
+
+
+ BMessage();
+
+
+ BMessage(uint32 what);
+
+
+ BMessage(const BMessage& a_message);
+
+
+ virtual ~BMessage();
+
+
+ BMessage& operator=(const BMessage& msg);
+
+
+ status_t GetInfo(type_code typeRequested, int32 which, char** name, type_code* typeReturned, int32* count = NULL) const;
+
+
+ status_t GetInfo(const char* name, type_code* type, int32* c = 0) const;
+
+
+ status_t GetInfo(const char* name, type_code* type, bool* fixed_size) const;
+
+
+ int32 CountNames(type_code type) const;
+
+
+ bool IsEmpty() const;
+
+
+ bool IsSystem() const;
+
+
+ bool IsReply() const;
+
+
+ void PrintToStream() const;
+
+
+ status_t Rename(const char* old_entry, const char* new_entry);
+
+
+ bool WasDelivered() const;
+
+
+ bool IsSourceWaiting() const;
+
+
+ bool IsSourceRemote() const;
+
+
+ BMessenger ReturnAddress() const;
+
+
+ const BMessage* Previous() const;
+
+
+ bool WasDropped() const;
+
+
+ BPoint DropPoint(BPoint* offset = NULL) const;
+
+
+ status_t SendReply(uint32 command, BHandler* reply_to = NULL);
+
+
+ status_t SendReply(BMessage* the_reply, BHandler* reply_to = NULL, bigtime_t timeout = B_INFINITE_TIMEOUT);
+
+
+ status_t SendReply(BMessage* the_reply, BMessenger reply_to, bigtime_t timeout = B_INFINITE_TIMEOUT);
+
+
+ status_t SendReply(uint32 command, BMessage* reply_to_reply);
+
+
+ status_t SendReply(BMessage* the_reply, BMessage* reply_to_reply, bigtime_t send_timeout = B_INFINITE_TIMEOUT, bigtime_t reply_timeout = B_INFINITE_TIMEOUT);
+
+
+ ssize_t FlattenedSize() const;
+
+
+ status_t Flatten(char* buffer, ssize_t size) const;
+
+
+ status_t Flatten(BDataIO* stream, ssize_t* size = NULL) const;
+
+
+ status_t Unflatten(const char* flat_buffer);
+
+
+ status_t Unflatten(BDataIO* stream);
+
+
+ status_t AddSpecifier(const char* property);
+
+
+ status_t AddSpecifier(const char* property, int32 index);
+
+
+ status_t AddSpecifier(const char* property, int32 index, int32 range);
+
+
+ status_t AddSpecifier(const char* property, const char* name);
+
+
+ status_t AddSpecifier(const BMessage* specifier);
+
+
+ status_t SetCurrentSpecifier(int32 index);
+
+
+ status_t GetCurrentSpecifier(int32* index, BMessage* specifier = NULL, int32* form = NULL, const char** property = NULL) const;
+
+
+ bool HasSpecifiers() const;
+
+
+ status_t PopSpecifier();
+
+
+ status_t AddRect(const char* name, BRect a_rect);
+
+
+ status_t AddPoint(const char* name, BPoint a_point);
+
+
+ status_t AddString(const char* name, const char* a_string);
+
+
+ status_t AddString(const char* name, const BString& a_string);
+
+
+ status_t AddInt8(const char* name, int8 val);
+
+
+ status_t AddInt16(const char* name, int16 val);
+
+
+ status_t AddInt32(const char* name, int32 val);
+
+
+ status_t AddInt64(const char* name, int64 val);
+
+
+ status_t AddBool(const char* name, bool a_boolean);
+
+
+ status_t AddFloat(const char* name, float a_float);
+
+
+ status_t AddDouble(const char* name, double a_double);
+
+
+ status_t AddPointer(const char* name, const void* ptr);
+
+
+ status_t AddMessenger(const char* name, BMessenger messenger);
+
+
+ status_t AddRef(const char* name, const entry_ref* ref);
+
+
+ status_t AddMessage(const char* name, const BMessage* msg);
+
+
+ status_t AddFlat(const char* name, BFlattenable* obj, int32 count = 1);
+
+
+ status_t AddData(const char* name, type_code type, const void* data, ssize_t numBytes, bool is_fixed_size = true, int32 count = 1);
+
+
+ status_t RemoveData(const char* name, int32 index = 0);
+
+
+ status_t RemoveName(const char* name);
+
+
+ status_t MakeEmpty();
+
+
+ status_t FindRect(const char* name, BRect* rect) const;
+
+
+ status_t FindRect(const char* name, int32 index, BRect* rect) const;
+
+
+ status_t FindPoint(const char* name, BPoint* pt) const;
+
+
+ status_t FindPoint(const char* name, int32 index, BPoint* pt) const;
+
+
+ status_t FindString(const char* name, const char** str) const;
+
+
+ status_t FindString(const char* name, int32 index, const char** str) const;
+
+
+ status_t FindString(const char* name, BString* str) const;
+
+
+ status_t FindString(const char* name, int32 index, BString* str) const;
+
+
+ status_t FindInt8(const char* name, int8* value) const;
+
+
+ status_t FindInt8(const char* name, int32 index, int8* val) const;
+
+
+ status_t FindInt16(const char* name, int16* value) const;
+
+
+ status_t FindInt16(const char* name, int32 index, int16* val) const;
+
+
+ status_t FindInt32(const char* name, int32* value) const;
+
+
+ status_t FindInt32(const char* name, int32 index, int32* val) const;
+
+
+ status_t FindInt64(const char* name, int64* value) const;
+
+
+ status_t FindInt64(const char* name, int32 index, int64* val) const;
+
+
+ status_t FindBool(const char* name, bool* value) const;
+
+
+ status_t FindBool(const char* name, int32 index, bool* value) const;
+
+
+ status_t FindFloat(const char* name, float* f) const;
+
+
+ status_t FindFloat(const char* name, int32 index, float* f) const;
+
+
+ status_t FindDouble(const char* name, double* d) const;
+
+
+ status_t FindDouble(const char* name, int32 index, double* d) const;
+
+
+ status_t FindPointer(const char* name, void** ptr) const;
+
+
+ status_t FindPointer(const char* name, int32 index, void** ptr) const;
+
+
+ status_t FindMessenger(const char* name, BMessenger* m) const;
+
+
+ status_t FindMessenger(const char* name, int32 index, BMessenger* m) const;
+
+
+ status_t FindRef(const char* name, entry_ref* ref) const;
+
+
+ status_t FindRef(const char* name, int32 index, entry_ref* ref) const;
+
+
+ status_t FindMessage(const char* name, BMessage* msg) const;
+
+
+ status_t FindMessage(const char* name, int32 index, BMessage* msg) const;
+
+
+ status_t FindFlat(const char* name, BFlattenable* obj) const;
+
+
+ status_t FindFlat(const char* name, int32 index, BFlattenable* obj) const;
+
+
+ status_t FindData(const char* name, type_code type, const void** data, ssize_t* numBytes) const;
+
+
+ status_t FindData(const char* name, type_code type, int32 index, const void** data, ssize_t* numBytes) const;
+
+
+ status_t ReplaceRect(const char* name, BRect a_rect);
+
+
+ status_t ReplaceRect(const char* name, int32 index, BRect a_rect);
+
+
+ status_t ReplacePoint(const char* name, BPoint a_point);
+
+
+ status_t ReplacePoint(const char* name, int32 index, BPoint a_point);
+
+
+ status_t ReplaceString(const char* name, const char* string);
+
+
+ status_t ReplaceString(const char* name, int32 index, const char* string);
+
+
+ status_t ReplaceString(const char* name, const BString& string);
+
+
+ status_t ReplaceString(const char* name, int32 index, const BString& string);
+
+
+ status_t ReplaceInt8(const char* name, int8 val);
+
+
+ status_t ReplaceInt8(const char* name, int32 index, int8 val);
+
+
+ status_t ReplaceInt16(const char* name, int16 val);
+
+
+ status_t ReplaceInt16(const char* name, int32 index, int16 val);
+
+
+ status_t ReplaceInt32(const char* name, int32 val);
+
+
+ status_t ReplaceInt32(const char* name, int32 index, int32 val);
+
+
+ status_t ReplaceInt64(const char* name, int64 val);
+
+
+ status_t ReplaceInt64(const char* name, int32 index, int64 val);
+
+
+ status_t ReplaceBool(const char* name, bool a_bool);
+
+
+ status_t ReplaceBool(const char* name, int32 index, bool a_bool);
+
+
+ status_t ReplaceFloat(const char* name, float a_float);
+
+
+ status_t ReplaceFloat(const char* name, int32 index, float a_float);
+
+
+ status_t ReplaceDouble(const char* name, double a_double);
+
+
+ status_t ReplaceDouble(const char* name, int32 index, double a_double);
+
+
+ status_t ReplacePointer(const char* name, const void* ptr);
+
+
+ status_t ReplacePointer(const char* name,int32 index,const void* ptr);
+
+
+ status_t ReplaceMessenger(const char* name, BMessenger messenger);
+
+
+ status_t ReplaceMessenger(const char* name, int32 index, BMessenger msngr);
+
+
+ status_t ReplaceRef( const char* name,const entry_ref* ref);
+
+
+ status_t ReplaceRef( const char* name, int32 index, const entry_ref* ref);
+
+
+ status_t ReplaceMessage(const char* name, const BMessage* msg);
+
+
+ status_t ReplaceMessage(const char* name, int32 index, const BMessage* msg);
+
+
+ status_t ReplaceFlat(const char* name, BFlattenable* obj);
+
+
+ status_t ReplaceFlat(const char* name, int32 index, BFlattenable* obj);
+
+
+ status_t ReplaceData(const char* name, type_code type, const void* data, ssize_t data_size);
+
+
+ status_t ReplaceData(const char* name, type_code type, int32 index, const void* data, ssize_t data_size);
+
+
+ void* operator new(size_t size);
+
+
+ void operator delete(void* ptr, size_t size);
+
+
+ bool HasRect(const char* , int32 n = 0) const;
+
+
+ bool HasPoint(const char* , int32 n = 0) const;
+
+
+ bool HasString(const char* , int32 n = 0) const;
+
+
+ bool HasInt8(const char* , int32 n = 0) const;
+
+
+ bool HasInt16(const char* , int32 n = 0) const;
+
+
+ bool HasInt32(const char* , int32 n = 0) const;
+
+
+ bool HasInt64(const char* , int32 n = 0) const;
+
+
+ bool HasBool(const char* , int32 n = 0) const;
+
+
+ bool HasFloat(const char* , int32 n = 0) const;
+
+
+ bool HasDouble(const char* , int32 n = 0) const;
+
+
+ bool HasPointer(const char* , int32 n = 0) const;
+
+
+ bool HasMessenger(const char* , int32 n = 0) const;
+
+
+ bool HasRef(const char* , int32 n = 0) const;
+
+
+ bool HasMessage(const char* , int32 n = 0) const;
+
+
+ bool HasFlat(const char* , const BFlattenable* ) const;
+
+
+ bool HasFlat(const char* ,int32 ,const BFlattenable* ) const;
+
+
+ bool HasData(const char* , type_code , int32 n = 0) const;
+
+
+ BRect FindRect(const char* , int32 n = 0) const;
+
+
+ BPoint FindPoint(const char* , int32 n = 0) const;
+
+
+ const char* FindString(const char* , int32 n = 0) const;
+
+
+ int8 FindInt8(const char* , int32 n = 0) const;
+
+
+ int16 FindInt16(const char* , int32 n = 0) const;
+
+
+ int32 FindInt32(const char* , int32 n = 0) const;
+
+
+ int64 FindInt64(const char* , int32 n = 0) const;
+
+
+ bool FindBool(const char* , int32 n = 0) const;
+
+
+ float FindFloat(const char* , int32 n = 0) const;
+
+
+ double FindDouble(const char* , int32 n = 0) const;
+
+
+ BMessage(BMessage* a_message);
+
+
+ NOTE: Add convenience functions for struct rgb_color
+
+
+
+
+ BMessageFilter(uint32 what, filter_hook func = NULL);
+
+
+ BMessageFilter(message_delivery delivery, message_source source, filter_hook func = NULL);
+
+
+ BMessageFilter(message_delivery delivery, message_source source, uint32 what, filter_hook func = NULL);
+
+
+ BMessageFilter(const BMessageFilter& filter);
+
+
+ BMessageFilter(const BMessageFilter* filter);
+
+
+ virtual ~BMessageFilter();
+
+
+ BMessageFilter& operator=(const BMessageFilter &from);
+
+
+ virtual filter_result Filter(BMessage* message, BHandler** target);
+
+
+ message_delivery MessageDelivery() const;
+
+
+ message_source MessageSource() const;
+
+
+ uint32 Command() const;
+
+
+ bool FiltersAnyCommand() const;
+
+
+ BLooper* Looper() const;
+
+
+
+
+ BMessageQueue();
+
+
+ virtual ~BMessageQueue();
+
+
+ void AddMessage(BMessage* an_event);
+
+
+ bool RemoveMessage(BMessage* an_event);
+
+
+ BMessage* NextMessage();
+
+
+ BMessage* FindMessage(int32 index) const;
+
+
+ BMessage* FindMessage(uint32 what, int32 index = 0) const;
+
+
+ int32 CountMessages() const;
+
+
+ bool IsEmpty() const;
+
+
+ bool Lock();
+
+
+ void Unlock();
+
+
+
+
+ BMessageRunner(BMessenger target, const BMessage* msg, bigtime_t interval, int32 count = -1);
+
+
+ BMessageRunner(BMessenger target, const BMessage* msg, bigtime_t interval, int32 count, BMessenger reply_to);
+
+
+ virtual ~BMessageRunner();
+
+
+ status_t InitCheck() const;
+
+
+ status_t SetInterval(bigtime_t interval);
+
+
+ status_t SetCount(int32 count);
+
+
+ status_t GetInfo(bigtime_t* interval, int32* count) const;
+
+
+
+
+ BMessenger();
+
+
+ BMessenger(const char* mime_sig, team_id team = -1, status_t* perr = NULL);
+
+
+ BMessenger(const BHandler* handler, const BLooper* looper = NULL, status_t* perr = NULL);
+
+
+ BMessenger(const BMessenger& from);
+
+
+ ~BMessenger();
+
+
+ bool IsTargetLocal() const;
+
+
+ BHandler* Target(BLooper** looper) const;
+
+
+ bool LockTarget() const;
+
+
+ status_t LockTargetWithTimeout(bigtime_t timeout) const;
+
+
+ status_t SendMessage(uint32 command, BHandler* reply_to = NULL) const;
+
+
+ status_t SendMessage(BMessage* a_message, BHandler* reply_to = NULL, bigtime_t timeout = B_INFINITE_TIMEOUT) const;
+
+
+ status_t SendMessage(BMessage* a_message, BMessenger reply_to, bigtime_t timeout = B_INFINITE_TIMEOUT) const;
+
+
+ status_t SendMessage(uint32 command, BMessage* reply) const;
+
+
+ status_t SendMessage(BMessage* a_message, BMessage* reply, bigtime_t send_timeout = B_INFINITE_TIMEOUT, bigtime_t reply_timeout = B_INFINITE_TIMEOUT) const;
+
+
+ BMessenger& operator=(const BMessenger &from);
+
+
+ bool operator==(const BMessenger &other) const;
+
+
+ bool IsValid() const;
+
+
+ team_id Team() const;
+
+
+
+
+ bool operator<(const BMessenger & a, const BMessenger & b);
+
+
+ bool operator!=(const BMessenger & a, const BMessenger & b);
+
+
+
+
+
+
+ BHandler(const char* name = NULL);
+
+
+ BHandler(BMessage* data);
+
+
+ virtual ~BHandler();
+
+
+ static BArchivable* Instantiate(BMessage* data);
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+
+ virtual void MessageReceived(BMessage* message);
+
+
+ BLooper* Looper() const;
+
+
+ void SetName(const char* name);
+
+
+ const char* Name() const;
+
+
+ virtual void SetNextHandler(BHandler* handler);
+
+
+ BHandler* NextHandler() const;
+
+
+ virtual void AddFilter(BMessageFilter* filter);
+
+
+ virtual bool RemoveFilter(BMessageFilter* filter);
+
+
+ virtual void SetFilterList(BList* filters);
+
+
+ BList* FilterList();
+
+
+ bool LockLooper();
+
+
+ status_t LockLooperWithTimeout(bigtime_t timeout);
+
+
+ void UnlockLooper();
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+
+
+ status_t StartWatching(BMessenger, uint32 what);
+
+
+ status_t StartWatchingAll(BMessenger);
+
+
+ status_t StopWatching(BMessenger, uint32 what);
+
+
+ status_t StopWatchingAll(BMessenger);
+
+
+ status_t StartWatching(BHandler* , uint32 what);
+
+
+ status_t StartWatchingAll(BHandler* );
+
+
+ status_t StopWatching(BHandler* , uint32 what);
+
+
+ status_t StopWatchingAll(BHandler* );
+
+
+ virtual void SendNotices(uint32 what, const BMessage* = 0);
+
+
+ bool IsWatched() const;
+
+
+
+
+
+
+ BLooper(const char* name = NULL, int32 priority = B_NORMAL_PRIORITY, int32 port_capacity = B_LOOPER_PORT_DEFAULT_CAPACITY);
+
+
+ BLooper(BMessage* data);
+
+
+ virtual ~BLooper();
+
+
+ static BArchivable* Instantiate(BMessage* data);
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+
+ status_t PostMessage(uint32 command);
+
+
+ status_t PostMessage(BMessage* message);
+
+
+ status_t PostMessage(uint32 command, BHandler* handler, BHandler* reply_to = NULL);
+
+
+ status_t PostMessage(BMessage* message, BHandler* handler, BHandler* reply_to = NULL);
+
+
+ virtual void DispatchMessage(BMessage* message, BHandler* handler);
+
+
+ virtual void MessageReceived(BMessage* msg);
+
+
+ BMessage* CurrentMessage() const;
+
+
+ BMessage* DetachCurrentMessage();
+
+
+ BMessageQueue* MessageQueue() const;
+
+
+ bool IsMessageWaiting() const;
+
+
+ void AddHandler(BHandler* handler);
+
+
+ bool RemoveHandler(BHandler* handler);
+
+
+ int32 CountHandlers() const;
+
+
+ BHandler* HandlerAt(int32 index) const;
+
+
+ int32 IndexOf(BHandler* handler) const;
+
+
+ BHandler* PreferredHandler() const;
+
+
+ void SetPreferredHandler(BHandler* handler);
+
+
+ virtual thread_id Run();
+
+
+ virtual void Quit();
+
+
+ virtual bool QuitRequested();
+
+
+ bool Lock();
+
+
+ void Unlock();
+
+
+ bool IsLocked() const;
+
+
+ status_t LockWithTimeout(bigtime_t timeout);
+
+
+ thread_id Thread() const;
+
+
+ team_id Team() const;
+
+
+ static BLooper* LooperForThread(thread_id tid);
+
+
+ thread_id LockingThread() const;
+
+
+ int32 CountLocks() const;
+
+
+ int32 CountLockRequests() const;
+
+
+ sem_id Sem() const;
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+
+
+ virtual void AddCommonFilter(BMessageFilter* filter);
+
+
+ virtual bool RemoveCommonFilter(BMessageFilter* filter);
+
+
+ virtual void SetCommonFilterList(BList* filters);
+
+
+ BList* CommonFilterList() const;
+
+
+ BMessage* MessageFromPort(bigtime_t = B_INFINITE_TIMEOUT);
+
+
+ virtual void task_looper();
+
+
+
+
+
+
+ BRoster();
+
+
+ ~BRoster();
+
+
+ bool IsRunning(const char* mime_sig) const;
+
+
+ bool IsRunning(entry_ref* ref) const;
+
+
+ team_id TeamFor(const char* mime_sig) const;
+
+
+ team_id TeamFor(entry_ref* ref) const;
+
+
+ void GetAppList(BList* team_id_list) const;
+
+
+ void GetAppList(const char* sig, BList* team_id_list) const;
+
+
+ status_t GetAppInfo(const char* sig, app_info* info) const;
+
+
+ status_t GetAppInfo(entry_ref* ref, app_info* info) const;
+
+
+ status_t GetRunningAppInfo(team_id team, app_info* info) const;
+
+
+ status_t GetActiveAppInfo(app_info* info) const;
+
+
+ status_t FindApp(const char* mime_type, entry_ref* app) const;
+
+
+ status_t FindApp(entry_ref* ref, entry_ref* app) const;
+
+
+ status_t Broadcast(BMessage* msg) const;
+
+
+ status_t Broadcast(BMessage* msg, BMessenger reply_to) const;
+
+
+ status_t StartWatching(BMessenger target, uint32 event_mask = B_REQUEST_LAUNCHED | B_REQUEST_QUIT) const;
+
+
+ status_t StopWatching(BMessenger target) const;
+
+
+ status_t ActivateApp(team_id team) const;
+
+
+ status_t Launch(const char* mime_type, BMessage* initial_msgs = NULL, team_id* app_team = NULL) const;
+
+
+ status_t Launch(const char* mime_type, BList* message_list, team_id* app_team = NULL) const;
+
+
+ status_t Launch(const char* mime_type, int argc, char** args, team_id* app_team = NULL) const;
+
+
+ status_t Launch(const entry_ref* ref, const BMessage* initial_message = NULL, team_id* app_team = NULL) const;
+
+
+ status_t Launch(const entry_ref* ref, const BList* message_list, team_id* app_team = NULL) const;
+
+
+ status_t Launch(const entry_ref* ref, int argc, const char* const* args, team_id* app_team = NULL) const;
+
+
+ void GetRecentDocuments(BMessage* refList, int32 maxCount, const char* ofType = NULL, const char* openedByAppSig = NULL) const;
+
+
+ void GetRecentDocuments(BMessage* refList, int32 maxCount, const char* ofTypeList[], int32 ofTypeListCount, const char* openedByAppSig = NULL) const;
+
+
+ void GetRecentFolders(BMessage* refList, int32 maxCount, const char* openedByAppSig = NULL) const;
+
+
+ void GetRecentApps(BMessage* refList, int32 maxCount) const;
+
+
+ void AddToRecentDocuments(const entry_ref* doc, const char* appSig = NULL) const;
+
+
+ void AddToRecentFolders(const entry_ref* folder,const char* appSig = NULL) const;
+
+
+
+
+
+
+ BClipboard(const char* name, bool transient = false);
+
+
+ virtual ~BClipboard();
+
+
+ const char* Name() const;
+
+
+ uint32 LocalCount() const;
+
+
+ uint32 SystemCount() const;
+
+
+ status_t StartWatching(BMessenger target);
+
+
+ status_t StopWatching(BMessenger target);
+
+
+ bool Lock();
+
+
+ void Unlock();
+
+
+ bool IsLocked() const;
+
+
+ status_t Clear();
+
+
+ status_t Commit();
+
+
+ status_t Revert();
+
+
+ BMessenger DataSource() const;
+
+
+ BMessage* Data() const;
+
+
+
+
+
+
+ BCursor(const void* cursorData);
+
+
+ BCursor(BMessage* data);
+
+
+ virtual ~BCursor();
+
+
+ virtual status_t Archive(BMessage* into, bool deep = true) const;
+
+
+ static BArchivable* Instantiate(BMessage* data);
+
+
+
+
+
+
+ BPropertyInfo(property_info* p = NULL, value_info* ci = NULL, bool free_on_delete = false);
+
+
+ virtual ~BPropertyInfo();
+
+
+ virtual int32 FindMatch(BMessage* msg, int32 index, BMessage* spec, int32 form, const char* prop, void* data = NULL) const;
+
+
+ virtual bool IsFixedSize() const;
+
+
+ virtual type_code TypeCode() const;
+
+
+ virtual ssize_t FlattenedSize() const;
+
+
+ virtual status_t Flatten(void* buffer, ssize_t size) const;
+
+
+ virtual bool AllowsTypeCode(type_code code) const;
+
+
+ virtual status_t Unflatten(type_code c, const void* buf, ssize_t s);
+
+
+ const property_info* Properties() const;
+
+
+ const value_info* Values() const;
+
+
+ int32 CountProperties() const;
+
+
+ int32 CountValues() const;
+
+
+ void PrintToStream() const;
+
+
+ static bool FindCommand(uint32, int32, property_info* );
+
+
+ static bool FindSpecifier(uint32, property_info* );
+
+
+
+
+
+
+
+
+ BPoint();
+
+
+ BPoint(float X, float Y);
+
+
+ BPoint(const BPoint& pt);
+
+
+ BPoint& operator=(const BPoint& from);
+
+
+ void Set(float X, float Y);
+
+
+ void ConstrainTo(BRect rect);
+
+
+ void PrintToStream() const;
+
+
+ BPoint operator+(const BPoint&) const;
+
+
+ BPoint operator-(const BPoint&) const;
+
+
+ BPoint& operator+=(const BPoint&);
+
+
+ BPoint& operator-=(const BPoint&);
+
+
+ bool operator!=(const BPoint&) const;
+
+
+ bool operator==(const BPoint&) const;
+
+
+
+
+ BPolygon(const BPoint* ptArray, int32 numPoints);
+
+
+ BPolygon();
+
+
+ BPolygon(const BPolygon* poly);
+
+
+ virtual ~BPolygon();
+
+
+ BPolygon& operator=(const BPolygon& from);
+
+
+ BRect Frame() const;
+
+
+ void AddPoints(const BPoint* ptArray, int32 numPoints);
+
+
+ int32 CountPoints() const;
+
+
+ void MapTo(BRect srcRect, BRect dstRect);
+
+
+ void PrintToStream() const;
+
+
+
+
+ BRect();
+
+
+ BRect(const BRect &);
+
+
+ BRect(float l, float t, float r, float b);
+
+
+ BRect(BPoint leftTop, BPoint rightBottom);
+
+
+ BRect& operator=(const BRect &from);
+
+
+ void Set(float l, float t, float r, float b);
+
+
+ void PrintToStream() const;
+
+
+ BPoint LeftTop() const;
+
+
+ BPoint RightBottom() const;
+
+
+ BPoint LeftBottom() const;
+
+
+ BPoint RightTop() const;
+
+
+ void SetLeftTop(const BPoint);
+
+
+ void SetRightBottom(const BPoint);
+
+
+ void SetLeftBottom(const BPoint);
+
+
+ void SetRightTop(const BPoint);
+
+
+ void InsetBy(BPoint);
+
+
+ void InsetBy(float dx, float dy);
+
+
+ void OffsetBy(BPoint);
+
+
+ void OffsetBy(float dx, float dy);
+
+
+ void OffsetTo(BPoint);
+
+
+ void OffsetTo(float x, float y);
+
+
+ BRect& InsetBySelf(BPoint);
+
+
+ BRect& InsetBySelf(float dx, float dy);
+
+
+ BRect InsetByCopy(BPoint);
+
+
+ BRect InsetByCopy(float dx, float dy);
+
+
+ BRect& OffsetBySelf(BPoint);
+
+
+ BRect& OffsetBySelf(float dx, float dy);
+
+
+ BRect OffsetByCopy(BPoint);
+
+
+ BRect OffsetByCopy(float dx, float dy);
+
+
+ BRect& OffsetToSelf(BPoint);
+
+
+ BRect& OffsetToSelf(float dx, float dy);
+
+
+ BRect OffsetToCopy(BPoint);
+
+
+ BRect OffsetToCopy(float dx, float dy);
+
+
+ bool operator==(BRect) const;
+
+
+ bool operator!=(BRect) const;
+
+
+ BRect operator&(BRect) const;
+
+
+ BRect operator|(BRect) const;
+
+
+ bool Intersects(BRect r) const;
+
+
+ bool IsValid() const;
+
+
+ float Width() const;
+
+
+ int32 IntegerWidth() const;
+
+
+ float Height() const;
+
+
+ int32 IntegerHeight() const;
+
+
+ bool Contains(BPoint) const;
+
+
+ bool Contains(BRect) const;
+
+
+
+
+ BRegion();
+
+
+ BRegion(const BRegion ®ion);
+
+
+ BRegion(const BRect rect);
+
+
+ virtual ~BRegion();
+
+
+ BRegion& operator=(const BRegion &from);
+
+
+ BRect Frame() const;
+
+
+ clipping_rect FrameInt() const;
+
+
+ BRect RectAt(int32 index);
+
+
+ clipping_rect RectAtInt(int32 index);
+
+
+ int32 CountRects();
+
+
+ void Set(BRect newBounds);
+
+
+ void Set(clipping_rect newBounds);
+
+
+ bool Intersects(BRect r) const;
+
+
+ bool Intersects(clipping_rect r) const;
+
+
+ bool Contains(BPoint pt) const;
+
+
+ bool Contains(int32 x, int32 y);
+
+
+ void PrintToStream() const;
+
+
+ void OffsetBy(int32 dh, int32 dv);
+
+
+ void MakeEmpty();
+
+
+ void Include(BRect r);
+
+
+ void Include(clipping_rect r);
+
+
+ void Include(const BRegion*);
+
+
+ void Exclude(BRect r);
+
+
+ void Exclude(clipping_rect r);
+
+
+ void Exclude(const BRegion*);
+
+
+ void IntersectWith(const BRegion*);
+
+
+
+
+
+
+ BPicture();
+
+
+ BPicture(const BPicture &original);
+
+
+ BPicture(BMessage* data);
+
+
+ virtual ~BPicture();
+
+
+ static BArchivable* Instantiate(BMessage* data);
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+
+ virtual status_t Perform(perform_code d, void* arg);
+
+
+ status_t Play(void* *callBackTable, int32 tableEntries, void* userData);
+
+
+ status_t Flatten(BDataIO* stream);
+
+
+ status_t Unflatten(BDataIO* stream);
+
+
+
+
+ BScreen(screen_id id = B_MAIN_SCREEN_ID);
+
+
+ BScreen(BWindow* win);
+
+
+ ~BScreen();
+
+
+ bool IsValid();
+
+
+ status_t SetToNext();
+
+
+ color_space ColorSpace();
+
+
+ BRect Frame();
+
+
+ screen_id ID();
+
+
+ status_t WaitForRetrace();
+
+
+ status_t WaitForRetrace(bigtime_t timeout);
+
+
+ uint8 IndexForColor(rgb_color rgb);
+
+
+ uint8 IndexForColor(uint8 r, uint8 g, uint8 b, uint8 a = 255);
+
+
+ rgb_color ColorForIndex(const uint8 index);
+
+
+ uint8 InvertIndex(uint8 index);
+
+
+ const color_map* ColorMap();
+
+
+ status_t GetBitmap(BBitmap** screen_shot, bool draw_cursor = true, BRect* bound = NULL);
+
+
+ status_t ReadBitmap(BBitmap* buffer, bool draw_cursor = true, BRect* bound = NULL);
+
+
+ rgb_color DesktopColor();
+
+
+ rgb_color DesktopColor(uint32 index);
+
+
+ void SetDesktopColor(rgb_color rgb, bool stick = true);
+
+
+ void SetDesktopColor(rgb_color rgb, uint32 index, bool stick = true);
+
+
+ status_t ProposeMode(display_mode* target, const display_mode* low, const display_mode* high);
+
+
+ status_t GetModeList(display_mode** mode_list, uint32* count);
+
+
+ status_t GetMode(display_mode* mode);
+
+
+ status_t GetMode(uint32 workspace, display_mode* mode);
+
+
+ status_t SetMode(display_mode* mode, bool makeDefault = false);
+
+
+ status_t SetMode(uint32 workspace, display_mode* mode, bool makeDefault = false);
+
+
+ status_t GetDeviceInfo(accelerant_device_info* adi);
+
+
+ status_t GetPixelClockLimits(display_mode* mode, uint32* low, uint32* high);
+
+
+ status_t GetTimingConstraints(display_timing_constraints* dtc);
+
+
+ status_t SetDPMS(uint32 dpms_state);
+
+
+ uint32 DPMSState(void);
+
+
+ uint32 DPMSCapabilites(void);
+
+
+ BPrivateScreen* private_screen();
+
+
+
+
+ BShape();
+
+
+ BShape(const BShape& copyFrom);
+
+
+ BShape(BMessage* data);
+
+
+ virtual ~BShape();
+
+
+ virtual status_t Archive(BMessage* into, bool deep = true) const;
+
+
+ static BArchivable* Instantiate(BMessage* data);
+
+
+ void Clear();
+
+
+ BRect Bounds() const;
+
+
+ status_t AddShape(const BShape* other);
+
+
+ status_t MoveTo(BPoint point);
+
+
+ status_t LineTo(BPoint linePoint);
+
+
+ status_t BezierTo(BPoint controlPoints[3]);
+
+
+ status_t Close();
+
+
+
+
+ BShapeIterator();
+
+
+ virtual ~BShapeIterator();
+
+
+ virtual status_t IterateMoveTo(BPoint* point);
+
+
+ virtual status_t IterateLineTo(int32 lineCount, BPoint* linePts);
+
+
+ virtual status_t IterateBezierTo(int32 bezierCount, BPoint* bezierPts);
+
+
+ virtual status_t IterateClose();
+
+
+ status_t Iterate(BShape* shape);
+
+
+
+
+ const color_map* system_colors();
+
+
+ status_t set_screen_space(int32 index, uint32 res, bool stick = true);
+
+
+
+
+
+
+ BBitmap(BRect bounds, uint32 flags, color_space depth, int32 bytesPerRow=B_ANY_BYTES_PER_ROW, screen_id screenID=B_MAIN_SCREEN_ID);
+
+
+ BBitmap(BRect bounds, color_space depth, bool accepts_views = false, bool need_contiguous = false);
+
+
+ BBitmap(const BBitmap* source, bool accepts_views = false, bool need_contiguous = false);
+
+
+ BBitmap(BMessage* data);
+
+
+ virtual ~BBitmap();
+
+
+ static BArchivable* Instantiate(BMessage* data);
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+
+ status_t InitCheck() const;
+
+
+ bool IsValid() const;
+
+
+ status_t LockBits(uint32* state=NULL);
+
+
+ void UnlockBits();
+
+
+ area_id Area() const;
+
+
+ void* Bits() const;
+
+
+ int32 BitsLength() const;
+
+
+ int32 BytesPerRow() const;
+
+
+ color_space ColorSpace() const;
+
+
+ BRect Bounds() const;
+
+
+ void SetBits(const void* data, int32 length, int32 offset, color_space cs);
+
+
+ status_t GetOverlayRestrictions(overlay_restrictions* restrict) const;
+
+
+ virtual void AddChild(BView* view);
+
+
+ virtual bool RemoveChild(BView* view);
+
+
+ int32 CountChildren() const;
+
+
+ BView* ChildAt(int32 index) const;
+
+
+ BView* FindView(const char* view_name) const;
+
+
+ BView* FindView(BPoint point) const;
+
+
+ bool Lock();
+
+
+ void Unlock();
+
+
+ bool IsLocked() const;
+
+
+
+
+ BFont();
+
+
+ BFont(const BFont &font);
+
+
+ BFont(const BFont* font);
+
+
+ status_t SetFamilyAndStyle(const font_family family,
+
+
+ void SetFamilyAndStyle(uint32 code);
+
+
+ status_t SetFamilyAndFace(const font_family family, uint16 face);
+
+
+ void SetSize(float size);
+
+
+ void SetShear(float shear);
+
+
+ void SetRotation(float rotation);
+
+
+ void SetSpacing(uint8 spacing);
+
+
+ void SetEncoding(uint8 encoding);
+
+
+ void SetFace(uint16 face);
+
+
+ void SetFlags(uint32 flags);
+
+
+ void GetFamilyAndStyle(font_family* family, font_style* style) const;
+
+
+ uint32 FamilyAndStyle() const;
+
+
+ float Size() const;
+
+
+ float Shear() const;
+
+
+ float Rotation() const;
+
+
+ uint8 Spacing() const;
+
+
+ uint8 Encoding() const;
+
+
+ uint16 Face() const;
+
+
+ uint32 Flags() const;
+
+
+ font_direction Direction() const;
+
+
+ bool IsFixed() const;
+
+
+ bool IsFullAndHalfFixed() const;
+
+
+ BRect BoundingBox() const;
+
+
+ unicode_block Blocks() const;
+
+
+ font_file_format FileFormat() const;
+
+
+ int32 CountTuned() const;
+
+
+ void GetTunedInfo(int32 index, tuned_font_info* info) const;
+
+
+ void TruncateString(BString* in_out, uint32 mode, float width) const;
+
+
+ void GetTruncatedStrings(const char* stringArray[], int32 numStrings, uint32 mode, float width, BString resultArray[]) const;
+
+
+ void GetTruncatedStrings(const char* stringArray[], int32 numStrings, uint32 mode, float width, char* resultArray[]) const;
+
+
+ float StringWidth(const char* string) const;
+
+
+ float StringWidth(const char* string, int32 length) const;
+
+
+ void GetStringWidths(const char* stringArray[], const int32 lengthArray[], int32 numStrings, float widthArray[]) const;
+
+
+ void GetEscapements(const char charArray[], int32 numChars, float escapementArray[]) const;
+
+
+ void GetEscapements(const char charArray[], int32 numChars, escapement_delta* delta, float escapementArray[]) const;
+
+
+ void GetEscapements(const char charArray[], int32 numChars, escapement_delta* delta, BPoint escapementArray[]) const;
+
+
+ void GetEscapements(const char charArray[], int32 numChars, escapement_delta* delta, BPoint escapementArray[], BPoint offsetArray[]) const;
+
+
+ void GetEdges(const char charArray[], int32 numBytes, edge_info edgeArray[]) const;
+
+
+ void GetHeight(font_height* height) const;
+
+
+ void GetBoundingBoxesAsGlyphs(const char charArray[], int32 numChars, font_metric_mode mode, BRect boundingBoxArray[]) const;
+
+
+ void GetBoundingBoxesAsString(const char charArray[], int32 numChars, font_metric_mode mode, escapement_delta* delta, BRect boundingBoxArray[]) const;
+
+
+ void GetBoundingBoxesForStrings(const char* stringArray[], int32 numStrings, font_metric_mode mode, escapement_delta deltas[], BRect boundingBoxArray[]) const;
+
+
+ void GetGlyphShapes(const char charArray[], int32 numChars, BShape* glyphShapeArray[]) const;
+
+
+ void GetHasGlyphs(const char charArray[], int32 numChars, bool hasArray[]) const;
+
+
+ BFont& operator=(const BFont &font);
+
+
+ bool operator==(const BFont &font) const;
+
+
+ bool operator!=(const BFont &font) const;
+
+
+ void PrintToStream() const;
+
+
+
+
+ int32 count_font_families();
+
+
+ status_t get_font_family(int32 index, font_family* name, uint32* flags = NULL);
+
+
+ int32 count_font_styles(font_family name);
+
+
+ status_t get_font_style(font_family family, int32 index, font_style* name, uint32* flags = NULL);
+
+
+ status_t get_font_style(font_family family, int32 index, font_style* name, uint16* face, uint32* flags = NULL);
+
+
+ bool update_font_families(bool check_only);
+
+
+ status_t get_font_cache_info(uint32 id, void* set);
+
+
+ status_t set_font_cache_info(uint32 id, void* set);
+
+
+
+
+
+
+ BControl(BRect frame, const char* name, const char* label, BMessage* message, uint32 resizeMask, uint32 flags);
+
+
+ BControl(BMessage* data);
+
+
+ virtual ~BControl();
+
+
+ static BArchivable* Instantiate(BMessage* data);
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+
+ virtual void WindowActivated(bool state);
+
+
+ virtual void AttachedToWindow();
+
+
+ virtual void MessageReceived(BMessage* msg);
+
+
+ virtual void MakeFocus(bool state = true);
+
+
+ virtual void KeyDown(const char* bytes, int32 numBytes);
+
+
+ virtual void MouseDown(BPoint pt);
+
+
+ virtual void MouseUp(BPoint pt);
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* msg);
+
+
+ virtual void DetachedFromWindow();
+
+
+ virtual void SetLabel(const char* text);
+
+
+ const char* Label() const;
+
+
+ virtual void SetValue(int32 value);
+
+
+ int32 Value() const;
+
+
+ virtual void SetEnabled(bool on);
+
+
+ bool IsEnabled() const;
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+
+
+ virtual void ResizeToPreferred();
+
+
+ virtual status_t Invoke(BMessage* msg = NULL);
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+
+
+ virtual void AllAttached();
+
+
+ virtual void AllDetached();
+
+
+ bool IsFocusChanging() const;
+
+
+ bool IsTracking() const;
+
+
+ void SetTracking(bool state);
+
+
+ void SetValueNoUpdate(int32 value);
+
+
+
+
+ BButton(BRect frame, const char* name, const char* label, BMessage* message, uint32 resizeMask = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW | B_NAVIGABLE);
+
+
+ BButton(BMessage* data);
+
+
+ virtual ~BButton();
+
+
+ static BArchivable* Instantiate(BMessage* data);
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+
+ virtual void Draw(BRect updateRect);
+
+
+ virtual void MouseDown(BPoint where);
+
+
+ virtual void AttachedToWindow();
+
+
+ virtual void KeyDown(const char* bytes, int32 numBytes);
+
+
+ virtual void MakeDefault(bool state);
+
+
+ virtual void SetLabel(const char* text);
+
+
+ bool IsDefault() const;
+
+
+ virtual void MessageReceived(BMessage* msg);
+
+
+ virtual void WindowActivated(bool state);
+
+
+ virtual void MouseUp(BPoint pt);
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* msg);
+
+
+ virtual void DetachedFromWindow();
+
+
+ virtual void SetValue(int32 value);
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+
+
+ virtual void ResizeToPreferred();
+
+
+ virtual status_t Invoke(BMessage* msg = NULL);
+
+
+ virtual void FrameMoved(BPoint new_position);
+
+
+ virtual void FrameResized(float new_width, float new_height);
+
+
+ virtual void MakeFocus(bool state = true);
+
+
+ virtual void AllAttached();
+
+
+ virtual void AllDetached();
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+
+
+
+
+ BCheckBox(BRect frame, const char* name, const char* label, BMessage* message, uint32 resizeMask = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW | B_NAVIGABLE);
+
+
+ BCheckBox(BMessage* data);
+
+
+ virtual ~BCheckBox();
+
+
+ static BArchivable* Instantiate(BMessage* data);
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+
+ virtual void Draw(BRect updateRect);
+
+
+ virtual void AttachedToWindow();
+
+
+ virtual void MouseDown(BPoint where);
+
+
+ virtual void MessageReceived(BMessage* msg);
+
+
+ virtual void WindowActivated(bool state);
+
+
+ virtual void KeyDown(const char* bytes, int32 numBytes);
+
+
+ virtual void MouseUp(BPoint pt);
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* msg);
+
+
+ virtual void DetachedFromWindow();
+
+
+ virtual void SetValue(int32 value);
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+
+
+ virtual void ResizeToPreferred();
+
+
+ virtual status_t Invoke(BMessage* msg = NULL);
+
+
+ virtual void FrameMoved(BPoint new_position);
+
+
+ virtual void FrameResized(float new_width, float new_height);
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+
+
+ virtual void MakeFocus(bool state = true);
+
+
+ virtual void AllAttached();
+
+
+ virtual void AllDetached();
+
+
+
+
+ BColorControl(BPoint start, color_control_layout layout, float cell_size, const char *name, BMessage *message = NULL, bool use_offscreen = false);
+
+
+ BColorControl(BMessage *data);
+
+
+ virtual ~BColorControl();
+
+
+ static BArchivable *Instantiate(BMessage *data);
+
+
+ virtual status_t Archive(BMessage *data, bool deep = true) const;
+
+
+ virtual void SetValue(int32 color_value);
+
+
+ void SetValue(rgb_color color);
+
+
+ rgb_color ValueAsColor();
+
+
+ virtual void SetEnabled(bool state);
+
+
+ virtual void AttachedToWindow();
+
+
+ virtual void MessageReceived(BMessage *msg);
+
+
+ virtual void Draw(BRect updateRect);
+
+
+ virtual void MouseDown(BPoint where);
+
+
+ virtual void KeyDown(const char *bytes, int32 numBytes);
+
+
+ virtual void SetCellSize(float size);
+
+
+ float CellSize() const;
+
+
+ virtual void SetLayout(color_control_layout layout);
+
+
+ color_control_layout Layout() const;
+
+
+ virtual void WindowActivated(bool state);
+
+
+ virtual void MouseUp(BPoint pt);
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage *msg);
+
+
+ virtual void DetachedFromWindow();
+
+
+ virtual void GetPreferredSize(float *width, float *height);
+
+
+ virtual void ResizeToPreferred();
+
+
+ virtual status_t Invoke(BMessage *msg = NULL);
+
+
+ virtual void FrameMoved(BPoint new_position);
+
+
+ virtual void FrameResized(float new_width, float new_height);
+
+
+ virtual BHandler *ResolveSpecifier(BMessage *msg, int32 index, BMessage *specifier, int32 form, const char *property);
+
+
+ virtual status_t GetSupportedSuites(BMessage *data);
+
+
+ virtual void MakeFocus(bool state = true);
+
+
+ virtual void AllAttached();
+
+
+ virtual void AllDetached();
+
+
+
+
+ BPictureButton(BRect frame, const char* name, BPicture* off, BPicture* on, BMessage* message, uint32 behavior = B_ONE_STATE_BUTTON, uint32 resizeMask = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flgs = B_WILL_DRAW | B_NAVIGABLE);
+
+
+ BPictureButton(BMessage* data);
+
+
+ virtual ~BPictureButton();
+
+
+ static BArchivable* Instantiate(BMessage* data);
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+
+ virtual void Draw(BRect updateRect);
+
+
+ virtual void MouseDown(BPoint where);
+
+
+ virtual void KeyDown(const char* bytes, int32 numBytes);
+
+
+ virtual void SetEnabledOn(BPicture* on);
+
+
+ virtual void SetEnabledOff(BPicture* off);
+
+
+ virtual void SetDisabledOn(BPicture* on);
+
+
+ virtual void SetDisabledOff(BPicture* off);
+
+
+ BPicture* EnabledOn() const;
+
+
+ BPicture* EnabledOff() const;
+
+
+ BPicture* DisabledOn() const;
+
+
+ BPicture* DisabledOff() const;
+
+
+ virtual void SetBehavior(uint32 behavior);
+
+
+ uint32 Behavior() const;
+
+
+ virtual void MessageReceived(BMessage* msg);
+
+
+ virtual void MouseUp(BPoint pt);
+
+
+ virtual void WindowActivated(bool state);
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* msg);
+
+
+ virtual void AttachedToWindow();
+
+
+ virtual void DetachedFromWindow();
+
+
+ virtual void SetValue(int32 value);
+
+
+ virtual status_t Invoke(BMessage* msg = NULL);
+
+
+ virtual void FrameMoved(BPoint new_position);
+
+
+ virtual void FrameResized(float new_width, float new_height);
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+
+
+ virtual void ResizeToPreferred();
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+
+
+ virtual void MakeFocus(bool state = true);
+
+
+ virtual void AllAttached();
+
+
+ virtual void AllDetached();
+
+
+
+
+ BRadioButton(BRect frame, const char* name, const char* label, BMessage* message, uint32 resizMask = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW | B_NAVIGABLE);
+
+
+ BRadioButton(BMessage* data);
+
+
+ virtual ~BRadioButton();
+
+
+ static BArchivable* Instantiate(BMessage* data);
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+
+ virtual void Draw(BRect updateRect);
+
+
+ virtual void MouseDown(BPoint where);
+
+
+ virtual void AttachedToWindow();
+
+
+ virtual void KeyDown(const char* bytes, int32 numBytes);
+
+
+ virtual void SetValue(int32 value);
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+
+
+ virtual void ResizeToPreferred();
+
+
+ virtual status_t Invoke(BMessage* msg = NULL);
+
+
+ virtual void MessageReceived(BMessage* msg);
+
+
+ virtual void WindowActivated(bool state);
+
+
+ virtual void MouseUp(BPoint pt);
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* msg);
+
+
+ virtual void DetachedFromWindow();
+
+
+ virtual void FrameMoved(BPoint new_position);
+
+
+ virtual void FrameResized(float new_width, float new_height);
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+
+
+ virtual void MakeFocus(bool state = true);
+
+
+ virtual void AllAttached();
+
+
+ virtual void AllDetached();
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+
+
+
+
+ BSlider(BRect frame, const char* name, const char* label, BMessage* message, int32 minValue, int32 maxValue, thumb_style thumbType = B_BLOCK_THUMB, uint32 resizingMode = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_NAVIGABLE | B_WILL_DRAW | B_FRAME_EVENTS);
+
+
+ BSlider(BRect frame, const char* name, const char* label, BMessage* message, int32 minValue, int32 maxValue, orientation posture /*= B_HORIZONTAL*/, thumb_style thumbType = B_BLOCK_THUMB, uint32 resizingMode = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_NAVIGABLE | B_WILL_DRAW | B_FRAME_EVENTS);
+
+
+ BSlider(BMessage* data);
+
+
+ virtual ~BSlider();
+
+
+ static BArchivable* Instantiate(BMessage* data);
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+
+ virtual status_t Perform(perform_code d, void* arg);
+
+
+ virtual void WindowActivated(bool state);
+
+
+ virtual void AttachedToWindow();
+
+
+ virtual void AllAttached();
+
+
+ virtual void AllDetached();
+
+
+ virtual void DetachedFromWindow();
+
+
+ virtual void MessageReceived(BMessage* msg);
+
+
+ virtual void FrameMoved(BPoint new_position);
+
+
+ virtual void FrameResized(float w,float h);
+
+
+ virtual void KeyDown(const char* bytes, int32 n);
+
+
+ virtual void MouseDown(BPoint);
+
+
+ virtual void MouseUp(BPoint pt);
+
+
+ virtual void MouseMoved(BPoint pt, uint32 c, const BMessage* m);
+
+
+ virtual void Pulse();
+
+
+ virtual void SetLabel(const char* label);
+
+
+ virtual void SetLimitLabels(const char* minLabel, const char* maxLabel);
+
+
+ const char* MinLimitLabel() const;
+
+
+ const char* MaxLimitLabel() const;
+
+
+ virtual void SetValue(int32);
+
+
+ virtual int32 ValueForPoint(BPoint) const;
+
+
+ virtual void SetPosition(float);
+
+
+ float Position() const;
+
+
+ virtual void SetEnabled(bool on);
+
+
+ void GetLimits(int32* minimum, int32* maximum);
+
+
+ virtual void Draw(BRect);
+
+
+ virtual void DrawSlider();
+
+
+ virtual void DrawBar();
+
+
+ virtual void DrawHashMarks();
+
+
+ virtual void DrawThumb();
+
+
+ virtual void DrawFocusMark();
+
+
+ virtual void DrawText();
+
+
+ virtual char* UpdateText() const;
+
+
+ virtual BRect BarFrame() const;
+
+
+ virtual BRect HashMarksFrame() const;
+
+
+ virtual BRect ThumbFrame() const;
+
+
+ virtual void SetFlags(uint32 flags);
+
+
+ virtual void SetResizingMode(uint32 mode);
+
+
+ virtual void GetPreferredSize( float* width, float* height);
+
+
+ virtual void ResizeToPreferred();
+
+
+ virtual status_t Invoke(BMessage* msg=NULL);
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+
+
+ virtual void SetModificationMessage(BMessage* message);
+
+
+ BMessage* ModificationMessage() const;
+
+
+ virtual void SetSnoozeAmount(int32);
+
+
+ int32 SnoozeAmount() const;
+
+
+ virtual void SetKeyIncrementValue(int32 value);
+
+
+ int32 KeyIncrementValue() const;
+
+
+ virtual void SetHashMarkCount(int32 count);
+
+
+ int32 HashMarkCount() const;
+
+
+ virtual void SetHashMarks(hash_mark_location where);
+
+
+ hash_mark_location HashMarks() const;
+
+
+ virtual void SetStyle(thumb_style s);
+
+
+ thumb_style Style() const;
+
+
+ virtual void SetBarColor(rgb_color);
+
+
+ rgb_color BarColor() const;
+
+
+ virtual void UseFillColor(bool, const rgb_color* c=NULL);
+
+
+ bool FillColor(rgb_color*) const;
+
+
+ BView* OffscreenView() const;
+
+
+ orientation Orientation() const;
+
+
+ virtual void SetOrientation(orientation);
+
+
+ float BarThickness() const;
+
+
+ virtual void SetBarThickness(float thickness);
+
+
+ virtual void SetFont(const BFont* font, uint32 properties = B_FONT_ALL);
+
+
+
+
+ BTab(BView* contents=NULL);
+
+
+ BTab(BMessage* data);
+
+
+ virtual ~BTab();
+
+
+ static BArchivable* Instantiate(BMessage* data);
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+
+ virtual status_t Perform(uint32 d, void* arg);
+
+
+ const char* Label() const;
+
+
+ virtual void SetLabel(const char* label);
+
+
+ bool IsSelected() const;
+
+
+ virtual void Select(BView* owner);
+
+
+ virtual void Deselect();
+
+
+ virtual void SetEnabled(bool on);
+
+
+ bool IsEnabled() const;
+
+
+ void MakeFocus(bool infocus=true);
+
+
+ bool IsFocus() const;
+
+
+ virtual void SetView(BView* contents);
+
+
+ BView* View() const;
+
+
+ virtual void DrawFocusMark(BView* owner, BRect tabFrame);
+
+
+ virtual void DrawLabel(BView* owner, BRect tabFrame);
+
+
+ virtual void DrawTab(BView* owner, BRect tabFrame, tab_position, bool full=true);
+
+
+
+
+ BTabView(BRect frame, const char* name, button_width width = B_WIDTH_AS_USUAL, uint32 resizingMode = B_FOLLOW_ALL, uint32 flags = B_FULL_UPDATE_ON_RESIZE | B_WILL_DRAW | B_NAVIGABLE_JUMP | B_FRAME_EVENTS | B_NAVIGABLE);
+
+
+ BTabView(BMessage*);
+
+
+ virtual ~BTabView();
+
+
+ static BArchivable* Instantiate(BMessage*);
+
+
+ virtual status_t Archive(BMessage*, bool deep=true) const;
+
+
+ virtual status_t Perform(perform_code d, void* arg);
+
+
+ virtual void WindowActivated(bool state);
+
+
+ virtual void AttachedToWindow();
+
+
+ virtual void AllAttached();
+
+
+ virtual void AllDetached();
+
+
+ virtual void DetachedFromWindow();
+
+
+ virtual void MessageReceived(BMessage* msg);
+
+
+ virtual void FrameMoved(BPoint new_position);
+
+
+ virtual void FrameResized(float w,float h);
+
+
+ virtual void KeyDown(const char* bytes, int32 n);
+
+
+ virtual void MouseDown(BPoint);
+
+
+ virtual void MouseUp(BPoint);
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* msg);
+
+
+ virtual void Pulse();
+
+
+ virtual void Select(int32 tabIndex);
+
+
+ int32 Selection() const;
+
+
+ virtual void MakeFocus(bool focusState = true);
+
+
+ virtual void SetFocusTab(int32 tabIndex, bool focusState);
+
+
+ int32 FocusTab() const;
+
+
+ virtual void Draw(BRect);
+
+
+ virtual BRect DrawTabs();
+
+
+ virtual void DrawBox(BRect selectedTabFrame);
+
+
+ virtual BRect TabFrame(int32 tabIndex) const;
+
+
+ virtual void SetFlags(uint32 flags);
+
+
+ virtual void SetResizingMode(uint32 mode);
+
+
+ virtual void GetPreferredSize( float* width, float* height);
+
+
+ virtual void ResizeToPreferred();
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+
+
+ virtual void AddTab(BView* tabContents, BTab* tab=NULL);
+
+
+ virtual BTab* RemoveTab(int32 tabIndex);
+
+
+ virtual BTab* TabAt(int32 tabIndex) const;
+
+
+ virtual void SetTabWidth(button_width s);
+
+
+ button_width TabWidth() const;
+
+
+ virtual void SetTabHeight(float height);
+
+
+ float TabHeight() const;
+
+
+ BView* ContainerView() const;
+
+
+ int32 CountTabs() const;
+
+
+ BView* ViewForTab(int32 tabIndex) const;
+
+
+
+
+
+
+ BBox(BRect bounds, const char* name = NULL, uint32 resizeFlags = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE_JUMP, border_style border = B_FANCY_BORDER);
+
+
+ BBox(BMessage* data);
+
+
+ virtual ~BBox(void);
+
+
+ static BArchivable* Instantiate(BMessage* data);
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+
+ virtual void SetBorder(border_style style);
+
+
+ border_style Border() const;
+
+
+ void SetLabel(const char* label);
+
+
+ status_t SetLabel(BView* view_label);
+
+
+ const char* Label() const;
+
+
+ BView* LabelView() const;
+
+
+ virtual void Draw(BRect bounds);
+
+
+ virtual void AttachedToWindow();
+
+
+ virtual void DetachedFromWindow();
+
+
+ virtual void AllAttached();
+
+
+ virtual void AllDetached();
+
+
+ virtual void FrameResized(float new_width, float new_height);
+
+
+ virtual void MessageReceived(BMessage* msg);
+
+
+ virtual void MouseDown(BPoint pt);
+
+
+ virtual void MouseUp(BPoint pt);
+
+
+ virtual void WindowActivated(bool state);
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* msg);
+
+
+ virtual void FrameMoved(BPoint new_position);
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+
+
+ virtual void ResizeToPreferred();
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+
+
+ virtual void MakeFocus(bool state = true);
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+
+
+
+
+ BStringView(BRect bounds, const char* name, const char* text, uint32 resizeFlags = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW);
+
+
+ BStringView(BMessage* data);
+
+
+ virtual ~BStringView();
+
+
+ static BArchivable* Instantiate(BMessage* data);
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+
+ void SetText(const char* text);
+
+
+ const char* Text() const;
+
+
+ void SetAlignment(alignment flag);
+
+
+ alignment Alignment() const;
+
+
+ virtual void AttachedToWindow();
+
+
+ virtual void Draw(BRect bounds);
+
+
+ virtual void MessageReceived(BMessage* msg);
+
+
+ virtual void MouseDown(BPoint pt);
+
+
+ virtual void MouseUp(BPoint pt);
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* msg);
+
+
+ virtual void DetachedFromWindow();
+
+
+ virtual void FrameMoved(BPoint new_position);
+
+
+ virtual void FrameResized(float new_width, float new_height);
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+
+
+ virtual void ResizeToPreferred();
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+
+
+ virtual void MakeFocus(bool state = true);
+
+
+ virtual void AllAttached();
+
+
+ virtual void AllDetached();
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+
+
+
+
+ BStatusBar(BRect frame, const char* name, const char* label = NULL, const char* trailing_label = NULL);
+
+
+ BStatusBar(BMessage* data);
+
+
+ virtual ~BStatusBar();
+
+
+ static BArchivable* Instantiate(BMessage* data);
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+
+ virtual void AttachedToWindow();
+
+
+ virtual void MessageReceived(BMessage* msg);
+
+
+ virtual void Draw(BRect updateRect);
+
+
+ virtual void SetBarColor(rgb_color color);
+
+
+ virtual void SetBarHeight(float height);
+
+
+ virtual void SetText(const char* str);
+
+
+ virtual void SetTrailingText(const char* str);
+
+
+ virtual void SetMaxValue(float max);
+
+
+ virtual void Update(float delta, const char* main_text = NULL, const char* trailing_text = NULL);
+
+
+ virtual void Reset(const char* label = NULL, const char* trailing_label = NULL);
+
+
+ float CurrentValue() const;
+
+
+ float MaxValue() const;
+
+
+ rgb_color BarColor() const;
+
+
+ float BarHeight() const;
+
+
+ const char* Text() const;
+
+
+ const char* TrailingText() const;
+
+
+ const char* Label() const;
+
+
+ const char* TrailingLabel() const;
+
+
+ virtual void MouseDown(BPoint pt);
+
+
+ virtual void MouseUp(BPoint pt);
+
+
+ virtual void WindowActivated(bool state);
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* msg);
+
+
+ virtual void DetachedFromWindow();
+
+
+ virtual void FrameMoved(BPoint new_position);
+
+
+ virtual void FrameResized(float new_width, float new_height);
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+
+
+ virtual void ResizeToPreferred();
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+
+
+ virtual void MakeFocus(bool state = true);
+
+
+ virtual void AllAttached();
+
+
+ virtual void AllDetached();
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+
+
+
+
+
+
+ BScrollBar(BRect frame, const char* name, BView* target, float min, float max, orientation direction);
+
+
+ BScrollBar(BMessage* data);
+
+
+ virtual ~BScrollBar();
+
+
+ static BArchivable* Instantiate(BMessage* data);
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+
+ virtual void AttachedToWindow();
+
+
+ void SetValue(float value);
+
+
+ float Value() const;
+
+
+ void SetProportion(float);
+
+
+ float Proportion() const;
+
+
+ virtual void ValueChanged(float newValue);
+
+
+ void SetRange(float min, float max);
+
+
+ void GetRange(float* min, float* max) const;
+
+
+ void SetSteps(float smallStep, float largeStep);
+
+
+ void GetSteps(float* smallStep, float* largeStep) const;
+
+
+ void SetTarget(BView* target);
+
+
+ void SetTarget(const char* targetName);
+
+
+ BView* Target() const;
+
+
+ orientation Orientation() const;
+
+
+ virtual void MessageReceived(BMessage* msg);
+
+
+ virtual void MouseDown(BPoint pt);
+
+
+ virtual void MouseUp(BPoint pt);
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* msg);
+
+
+ virtual void DetachedFromWindow();
+
+
+ virtual void Draw(BRect updateRect);
+
+
+ virtual void FrameMoved(BPoint new_position);
+
+
+ virtual void FrameResized(float new_width, float new_height);
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+
+
+ virtual void ResizeToPreferred();
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+
+
+ virtual void MakeFocus(bool state = true);
+
+
+ virtual void AllAttached();
+
+
+ virtual void AllDetached();
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+
+
+
+
+ BScrollView(const char* name, BView* target, uint32 resizeMask = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = 0, bool horizontal = false, bool vertical = false, border_style border = B_FANCY_BORDER);
+
+
+ BScrollView(BMessage* data);
+
+
+ virtual ~BScrollView();
+
+
+ static BArchivable* Instantiate(BMessage* data);
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+
+ virtual void Draw(BRect updateRect);
+
+
+ virtual void AttachedToWindow();
+
+
+ BScrollBar* ScrollBar(orientation flag) const;
+
+
+ virtual void SetBorder(border_style border);
+
+
+ border_style Border() const;
+
+
+ virtual status_t SetBorderHighlighted(bool state);
+
+
+ bool IsBorderHighlighted() const;
+
+
+ void SetTarget(BView* new_target);
+
+
+ BView* Target() const;
+
+
+ virtual void MessageReceived(BMessage* msg);
+
+
+ virtual void MouseDown(BPoint pt);
+
+
+ virtual void WindowActivated(bool state);
+
+
+ virtual void MouseUp(BPoint pt);
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* msg);
+
+
+ virtual void DetachedFromWindow();
+
+
+ virtual void AllAttached();
+
+
+ virtual void AllDetached();
+
+
+ virtual void FrameMoved(BPoint new_position);
+
+
+ virtual void FrameResized(float new_width, float new_height);
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+
+
+ virtual void ResizeToPreferred();
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+
+
+ virtual void MakeFocus(bool state = true);
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+
+
+
+
+ status_t get_scroll_bar_info(scroll_bar_info* info);
+
+
+ status_t set_scroll_bar_info(scroll_bar_info* info);
+
+
+
+
+
+
+ BMenu(const char* title, menu_layout layout = B_ITEMS_IN_COLUMN);
+
+
+ BMenu(const char* title, float width, float height);
+
+
+ BMenu(BMessage* data);
+
+
+ virtual ~BMenu();
+
+
+ static BArchivable* Instantiate(BMessage* data);
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+
+ virtual void AttachedToWindow();
+
+
+ virtual void DetachedFromWindow();
+
+
+ bool AddItem(BMenuItem* item);
+
+
+ bool AddItem(BMenuItem* item, int32 index);
+
+
+ bool AddItem(BMenuItem* item, BRect frame);
+
+
+ bool AddItem(BMenu* menu);
+
+
+ bool AddItem(BMenu* menu, int32 index);
+
+
+ bool AddItem(BMenu* menu, BRect frame);
+
+
+ bool AddList(BList* list, int32 index);
+
+
+ bool AddSeparatorItem();
+
+
+ bool RemoveItem(BMenuItem* item);
+
+
+ BMenuItem* RemoveItem(int32 index);
+
+
+ bool RemoveItems(int32 index, int32 count, bool del = false);
+
+
+ bool RemoveItem(BMenu* menu);
+
+
+ BMenuItem* ItemAt(int32 index) const;
+
+
+ BMenu* SubmenuAt(int32 index) const;
+
+
+ int32 CountItems() const;
+
+
+ int32 IndexOf(BMenuItem* item) const;
+
+
+ int32 IndexOf(BMenu* menu) const;
+
+
+ BMenuItem* FindItem(uint32 command) const;
+
+
+ BMenuItem* FindItem(const char* name) const;
+
+
+ virtual status_t SetTargetForItems(BHandler* target);
+
+
+ virtual status_t SetTargetForItems(BMessenger messenger);
+
+
+ virtual void SetEnabled(bool state);
+
+
+ virtual void SetRadioMode(bool state);
+
+
+ virtual void SetTriggersEnabled(bool state);
+
+
+ virtual void SetMaxContentWidth(float max);
+
+
+ void SetLabelFromMarked(bool on);
+
+
+ bool IsLabelFromMarked();
+
+
+ bool IsEnabled() const;
+
+
+ bool IsRadioMode() const;
+
+
+ bool AreTriggersEnabled() const;
+
+
+ bool IsRedrawAfterSticky() const;
+
+
+ float MaxContentWidth() const;
+
+
+ BMenuItem* FindMarked();
+
+
+ BMenu* Supermenu() const;
+
+
+ BMenuItem* Superitem() const;
+
+
+ virtual void MessageReceived(BMessage* msg);
+
+
+ virtual void KeyDown(const char* bytes, int32 numBytes);
+
+
+ virtual void Draw(BRect updateRect);
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+
+
+ virtual void ResizeToPreferred();
+
+
+ virtual void FrameMoved(BPoint new_position);
+
+
+ virtual void FrameResized(float new_width, float new_height);
+
+
+ void InvalidateLayout();
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+
+
+ virtual status_t Perform(perform_code d, void* arg);
+
+
+ virtual void MakeFocus(bool state = true);
+
+
+ virtual void AllAttached();
+
+
+ virtual void AllDetached();
+
+
+ BMenu(BRect frame, const char* viewName, uint32 resizeMask, uint32 flags, menu_layout layout, bool resizeToFit);
+
+
+ virtual BPoint ScreenLocation();
+
+
+ void SetItemMargins(float left, float top, float right, float bottom);
+
+
+ void GetItemMargins(float* left, float* top, float* right,float* bottom) const;
+
+
+ menu_layout Layout() const;
+
+
+ virtual void Show();
+
+
+ void Show(bool selectFirstItem);
+
+
+ void Hide();
+
+
+ BMenuItem* Track(bool start_opened = false, BRect* special_rect = NULL);
+
+
+ virtual bool AddDynamicItem(add_state s);
+
+
+ virtual void DrawBackground(BRect update);
+
+
+ void SetTrackingHook(menu_tracking_hook func, void* state);
+
+
+
+
+ BMenuBar(BRect frame, const char* title, uint32 resizeMask = B_FOLLOW_LEFT_RIGHT | B_FOLLOW_TOP, menu_layout layout = B_ITEMS_IN_ROW, bool resizeToFit = true);
+
+
+ BMenuBar(BMessage* data);
+
+
+ virtual ~BMenuBar();
+
+
+ static BArchivable* Instantiate(BMessage* data);
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+
+ virtual void SetBorder(menu_bar_border border);
+
+
+ menu_bar_border Border() const;
+
+
+ virtual void Draw(BRect updateRect);
+
+
+ virtual void AttachedToWindow();
+
+
+ virtual void DetachedFromWindow();
+
+
+ virtual void MessageReceived(BMessage* msg);
+
+
+ virtual void MouseDown(BPoint where);
+
+
+ virtual void WindowActivated(bool state);
+
+
+ virtual void MouseUp(BPoint where);
+
+
+ virtual void FrameMoved(BPoint new_position);
+
+
+ virtual void FrameResized(float new_width, float new_height);
+
+
+ virtual void Show();
+
+
+ virtual void Hide();
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+
+
+ virtual void ResizeToPreferred();
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+
+
+ virtual void MakeFocus(bool state = true);
+
+
+ virtual void AllAttached();
+
+
+ virtual void AllDetached();
+
+
+ virtual status_t Perform(perform_code d, void* arg);
+
+
+
+
+ BMenuItem(const char* label, BMessage* message, char shortcut = 0, uint32 modifiers = 0);
+
+
+ BMenuItem(BMenu* menu, BMessage* message = NULL);
+
+
+ BMenuItem(BMessage* data);
+
+
+ virtual ~BMenuItem();
+
+
+ static BArchivable* Instantiate(BMessage* data);
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+
+ virtual void SetLabel(const char* name);
+
+
+ virtual void SetEnabled(bool state);
+
+
+ virtual void SetMarked(bool state);
+
+
+ virtual void SetTrigger(char ch);
+
+
+ virtual void SetShortcut(char ch, uint32 modifiers);
+
+
+ const char* Label() const;
+
+
+ bool IsEnabled() const;
+
+
+ bool IsMarked() const;
+
+
+ char Trigger() const;
+
+
+ char Shortcut(uint32* modifiers = NULL) const;
+
+
+ BMenu* Submenu() const;
+
+
+ BMenu* Menu() const;
+
+
+ BRect Frame() const;
+
+
+ virtual void GetContentSize(float* width, float* height);
+
+
+ virtual void TruncateLabel(float max, char* new_label);
+
+
+ virtual void DrawContent();
+
+
+ virtual void Draw();
+
+
+ virtual void Highlight(bool on);
+
+
+ bool IsSelected() const;
+
+
+ BPoint ContentLocation() const;
+
+
+ virtual status_t Invoke(BMessage* msg = NULL);
+
+
+
+
+ BSeparatorItem();
+
+
+ BSeparatorItem(BMessage* data);
+
+
+ virtual ~BSeparatorItem();
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+
+ static BArchivable* Instantiate(BMessage* data);
+
+
+ virtual void SetEnabled(bool state);
+
+
+ virtual void GetContentSize(float* width, float* height);
+
+
+ virtual void Draw();
+
+
+
+
+ BMenuField(BRect frame, const char* name, const char* label, BMenu* menu, uint32 resize = B_FOLLOW_LEFT|B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW | B_NAVIGABLE);
+
+
+ BMenuField(BRect frame, const char* name, const char* label, BMenu* menu, bool fixed_size, uint32 resize = B_FOLLOW_LEFT|B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW | B_NAVIGABLE);
+
+
+ BMenuField(BMessage* data);
+
+
+ virtual ~BMenuField();
+
+
+ static BArchivable* Instantiate(BMessage* data);
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+
+ virtual void Draw(BRect update);
+
+
+ virtual void AttachedToWindow();
+
+
+ virtual void AllAttached();
+
+
+ virtual void MouseDown(BPoint where);
+
+
+ virtual void KeyDown(const char* bytes, int32 numBytes);
+
+
+ virtual void MakeFocus(bool state);
+
+
+ virtual void MessageReceived(BMessage* msg);
+
+
+ virtual void WindowActivated(bool state);
+
+
+ virtual void MouseUp(BPoint pt);
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* msg);
+
+
+ virtual void DetachedFromWindow();
+
+
+ virtual void AllDetached();
+
+
+ virtual void FrameMoved(BPoint new_position);
+
+
+ virtual void FrameResized(float new_width, float new_height);
+
+
+ BMenu* Menu() const;
+
+
+ BMenuBar* MenuBar() const;
+
+
+ BMenuItem* MenuItem() const;
+
+
+ virtual void SetLabel(const char* label);
+
+
+ const char* Label() const;
+
+
+ virtual void SetEnabled(bool on);
+
+
+ bool IsEnabled() const;
+
+
+ virtual void SetAlignment(alignment label);
+
+
+ alignment Alignment() const;
+
+
+ virtual void SetDivider(float dividing_line);
+
+
+ float Divider() const;
+
+
+ void ShowPopUpMarker();
+
+
+ void HidePopUpMarker();
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+
+
+ virtual void ResizeToPreferred();
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+
+
+ virtual status_t Perform(perform_code d, void* arg);
+
+
+
+
+ BPopUpMenu(const char* title, bool radioMode = true, bool autoRename = true, menu_layout layout = B_ITEMS_IN_COLUMN);
+
+
+ BPopUpMenu(BMessage* data);
+
+
+ virtual ~BPopUpMenu();
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+
+ static BArchivable* Instantiate(BMessage* data);
+
+
+ BMenuItem* Go(BPoint where, bool delivers_message = false, bool open_anyway = false, bool async = false);
+
+
+ BMenuItem* Go(BPoint where, bool delivers_message, bool open_anyway, BRect click_to_open, bool async = false);
+
+
+ virtual void MessageReceived(BMessage* msg);
+
+
+ virtual void MouseDown(BPoint pt);
+
+
+ virtual void MouseUp(BPoint pt);
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* msg);
+
+
+ virtual void AttachedToWindow();
+
+
+ virtual void DetachedFromWindow();
+
+
+ virtual void FrameMoved(BPoint new_position);
+
+
+ virtual void FrameResized(float new_width, float new_height);
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+
+
+ virtual status_t Perform(perform_code d, void* arg);
+
+
+ virtual void ResizeToPreferred();
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+
+
+ virtual void MakeFocus(bool state = true);
+
+
+ virtual void AllAttached();
+
+
+ virtual void AllDetached();
+
+
+ void SetAsyncAutoDestruct(bool state);
+
+
+ bool AsyncAutoDestruct() const;
+
+
+ virtual BPoint ScreenLocation();
+
+
+
+
+ status_t set_menu_info(menu_info* info);
+
+
+ status_t get_menu_info(menu_info* info);
+
+
+
+
+
+
+ BListItem(uint32 outlineLevel = 0, bool expanded = true);
+
+
+ BListItem(BMessage* data);
+
+
+ virtual ~BListItem();
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+
+ float Height() const;
+
+
+ float Width() const;
+
+
+ bool IsSelected() const;
+
+
+ void Select();
+
+
+ void Deselect();
+
+
+ virtual void SetEnabled(bool on);
+
+
+ bool IsEnabled() const;
+
+
+ void SetHeight(float height);
+
+
+ void SetWidth(float width);
+
+
+ virtual void DrawItem(BView* owner, BRect bounds, bool complete = false) = 0;
+
+
+ virtual void Update(BView* owner, const BFont* font);
+
+
+ virtual status_t Perform(perform_code d, void* arg);
+
+
+ bool IsExpanded() const;
+
+
+ void SetExpanded(bool expanded);
+
+
+ uint32 OutlineLevel() const;
+
+
+ bool IsItemVisible() const;
+
+
+ void SetItemVisible(bool);
+
+
+
+
+ BStringItem(const char* text, uint32 outlineLevel = 0, bool expanded = true);
+
+
+ virtual ~BStringItem();
+
+
+ BStringItem(BMessage* data);
+
+
+ static BArchivable* Instantiate(BMessage* data);
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+
+ virtual void DrawItem(BView* owner, BRect frame, bool complete = false);
+
+
+ virtual void SetText(const char* text);
+
+
+ const char* Text() const;
+
+
+ virtual void Update(BView* owner, const BFont* font);
+
+
+ virtual status_t Perform(perform_code d, void* arg);
+
+
+
+
+ BListView(BRect frame, const char *name, list_view_type type = B_SINGLE_SELECTION_LIST, uint32 resizeMask = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE);
+
+
+ BListView(BMessage *data);
+
+
+ virtual ~BListView();
+
+
+ static BArchivable *Instantiate(BMessage *data);
+
+
+ virtual status_t Archive(BMessage *data, bool deep = true) const;
+
+
+ virtual void Draw(BRect updateRect);
+
+
+ virtual void MessageReceived(BMessage *msg);
+
+
+ virtual void MouseDown(BPoint where);
+
+
+ virtual void KeyDown(const char *bytes, int32 numBytes);
+
+
+ virtual void MakeFocus(bool state = true);
+
+
+ virtual void FrameResized(float newWidth, float newHeight);
+
+
+ virtual void TargetedByScrollView(BScrollView *scroller);
+
+
+ void ScrollTo(float x, float y);
+
+
+ virtual void ScrollTo(BPoint where);
+
+
+ virtual bool AddItem(BListItem *item);
+
+
+ virtual bool AddItem(BListItem *item, int32 atIndex);
+
+
+ virtual bool AddList(BList *newItems);
+
+
+ virtual bool AddList(BList *newItems, int32 atIndex);
+
+
+ virtual bool RemoveItem(BListItem *item);
+
+
+ virtual BListItem *RemoveItem(int32 index);
+
+
+ virtual bool RemoveItems(int32 index, int32 count);
+
+
+ virtual void SetSelectionMessage(BMessage *message);
+
+
+ virtual void SetInvocationMessage(BMessage *message);
+
+
+ BMessage *SelectionMessage() const;
+
+
+ uint32 SelectionCommand() const;
+
+
+ BMessage *InvocationMessage() const;
+
+
+ uint32 InvocationCommand() const;
+
+
+ virtual void SetListType(list_view_type type);
+
+
+ list_view_type ListType() const;
+
+
+ BListItem *ItemAt(int32 index) const;
+
+
+ int32 IndexOf(BPoint point) const;
+
+
+ int32 IndexOf(BListItem *item) const;
+
+
+ BListItem *FirstItem() const;
+
+
+ BListItem *LastItem() const;
+
+
+ bool HasItem(BListItem *item) const;
+
+
+ int32 CountItems() const;
+
+
+ virtual void MakeEmpty();
+
+
+ bool IsEmpty() const;
+
+
+ void DoForEach(bool (*func)(BListItem *));
+
+
+ void DoForEach(bool (*func)(BListItem *, void *), void *);
+
+
+ const BListItem **Items() const;
+
+
+ void InvalidateItem(int32 index);
+
+
+ void ScrollToSelection();
+
+
+ void Select(int32 index, bool extend = false);
+
+
+ void Select(int32 from, int32 to, bool extend = false);
+
+
+ bool IsItemSelected(int32 index) const;
+
+
+ int32 CurrentSelection(int32 index = 0) const;
+
+
+ virtual status_t Invoke(BMessage *msg = NULL);
+
+
+ void DeselectAll();
+
+
+ void DeselectExcept(int32 except_from, int32 except_to);
+
+
+ void Deselect(int32 index);
+
+
+ virtual void SelectionChanged();
+
+
+ void SortItems(int (*cmp)(const void *, const void *));
+
+
+ bool SwapItems(int32 a, int32 b);
+
+
+ bool MoveItem(int32 from, int32 to);
+
+
+ bool ReplaceItem(int32 index, BListItem * item);
+
+
+ virtual void AttachedToWindow();
+
+
+ virtual void FrameMoved(BPoint new_position);
+
+
+ BRect ItemFrame(int32 index);
+
+
+ virtual BHandler *ResolveSpecifier(BMessage *msg, int32 index, BMessage *specifier, int32 form, const char *property);
+
+
+ virtual status_t GetSupportedSuites(BMessage *data);
+
+
+ virtual status_t Perform(perform_code d, void *arg);
+
+
+ virtual void WindowActivated(bool state);
+
+
+ virtual void MouseUp(BPoint pt);
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage *msg);
+
+
+ virtual void DetachedFromWindow();
+
+
+ virtual bool InitiateDrag(BPoint pt, int32 itemIndex, bool initialySelected);
+
+
+ virtual void ResizeToPreferred();
+
+
+ virtual void GetPreferredSize(float *width, float *height);
+
+
+ virtual void AllAttached();
+
+
+ virtual void AllDetached();
+
+
+ virtual bool DoMiscellaneous(MiscCode code, MiscData * data);
+
+
+ virtual void DrawItem(BListItem *item, BRect itemRect, bool complete = false);
+
+
+
+
+ BOutlineListView(BRect frame, const char* name, list_view_type type = B_SINGLE_SELECTION_LIST, uint32 resizeMask = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE);
+
+
+ BOutlineListView(BMessage* data);
+
+
+ virtual ~BOutlineListView();
+
+
+ static BArchivable* Instantiate(BMessage* data);
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+
+ virtual void MouseDown(BPoint where);
+
+
+ virtual void KeyDown(const char* bytes, int32 numBytes);
+
+
+ virtual void FrameMoved(BPoint new_position);
+
+
+ virtual void FrameResized(float new_width, float new_height);
+
+
+ virtual void MouseUp(BPoint where);
+
+
+ virtual bool AddUnder(BListItem* item, BListItem* underItem);
+
+
+ virtual bool AddItem(BListItem* item);
+
+
+ virtual bool AddItem(BListItem* item, int32 fullListIndex);
+
+
+ virtual bool AddList(BList* newItems);
+
+
+ virtual bool AddList(BList* newItems, int32 fullListIndex);
+
+
+ virtual bool RemoveItem(BListItem* item);
+
+
+ virtual BListItem* RemoveItem(int32 fullListIndex);
+
+
+ virtual bool RemoveItems(int32 fullListIndex, int32 count);
+
+
+ BListItem* FullListItemAt(int32 fullListIndex) const;
+
+
+ int32 FullListIndexOf(BPoint point) const;
+
+
+ int32 FullListIndexOf(BListItem* item) const;
+
+
+ BListItem* FullListFirstItem() const;
+
+
+ BListItem* FullListLastItem() const;
+
+
+ bool FullListHasItem(BListItem* item) const;
+
+
+ int32 FullListCountItems() const;
+
+
+ int32 FullListCurrentSelection(int32 index = 0) const;
+
+
+ virtual void MakeEmpty();
+
+
+ bool FullListIsEmpty() const;
+
+
+ void FullListDoForEach(bool (*func)(BListItem* ));
+
+
+ void FullListDoForEach(bool (*func)(BListItem* , void* ), void*);
+
+
+ BListItem* Superitem(const BListItem* item);
+
+
+ void Expand(BListItem* item);
+
+
+ void Collapse(BListItem* item);
+
+
+ bool IsExpanded(int32 fullListIndex);
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+
+
+ virtual status_t Perform(perform_code d, void* arg);
+
+
+ virtual void ResizeToPreferred();
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+
+
+ virtual void MakeFocus(bool state = true);
+
+
+ virtual void AllAttached();
+
+
+ virtual void AllDetached();
+
+
+ virtual void DetachedFromWindow();
+
+
+ void FullListSortItems(int (*compareFunc)(const BListItem* , const BListItem* ));
+
+
+ void SortItemsUnder(BListItem* underItem, bool oneLevelOnly, int (*compareFunc)(const BListItem* , const BListItem*));
+
+
+ int32 CountItemsUnder(BListItem* under, bool oneLevelOnly) const;
+
+
+ BListItem* EachItemUnder(BListItem* underItem, bool oneLevelOnly, BListItem* (*eachFunc)(BListItem* , void* ), void* );
+
+
+ BListItem* ItemUnderAt(BListItem* underItem, bool oneLevelOnly, int32 index) const;
+
+
+ virtual bool DoMiscellaneous(MiscCode code, MiscData* data);
+
+
+ virtual void MessageReceived(BMessage* );
+
+
+ virtual void ExpandOrCollapse(BListItem* underItem, bool expand);
+
+
+
+
+
+
+ BTextView(BRect frame, const char* name, BRect textRect, uint32 resizeMask, uint32 flags = B_WILL_DRAW | B_PULSE_NEEDED);
+
+
+ BTextView(BRect frame, const char* name, BRect textRect, const BFont* initialFont, const rgb_color* initialColor, uint32 resizeMask, uint32 flags);
+
+
+ BTextView(BMessage* data);
+
+
+ virtual ~BTextView();
+
+
+ static BArchivable* Instantiate(BMessage* data);
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+
+ virtual void AttachedToWindow();
+
+
+ virtual void DetachedFromWindow();
+
+
+ virtual void Draw(BRect inRect);
+
+
+ virtual void MouseDown(BPoint where);
+
+
+ virtual void MouseUp(BPoint where);
+
+
+ virtual void MouseMoved(BPoint where, uint32 code, const BMessage* message);
+
+
+ virtual void WindowActivated(bool state);
+
+
+ virtual void KeyDown(const char* bytes, int32 numBytes);
+
+
+ virtual void Pulse();
+
+
+ virtual void FrameResized(float width, float height);
+
+
+ virtual void MakeFocus(bool focusState = true);
+
+
+ virtual void MessageReceived(BMessage* message);
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* message, int32 index, BMessage* specifier, int32 form, const char* property);
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+
+
+ virtual status_t Perform(perform_code d, void* arg);
+
+
+ void SetText(const char* inText, const text_run_array* inRuns = NULL);
+
+
+ void SetText(const char* inText, int32 inLength, const text_run_array* inRuns = NULL);
+
+
+ void SetText(BFile* inFile, int32 startOffset, int32 inLength, const text_run_array* inRuns = NULL);
+
+
+ void Insert(const char* inText, const text_run_array* inRuns = NULL);
+
+
+ void Insert(const char* inText, int32 inLength, const text_run_array* inRuns = NULL);
+
+
+ void Insert(int32 startOffset, const char* inText, int32 inLength, const text_run_array* inRuns = NULL);
+
+
+ void Delete();
+
+
+ void Delete(int32 startOffset, int32 endOffset);
+
+
+ const char* Text() const;
+
+
+ int32 TextLength() const;
+
+
+ void GetText(int32 offset, int32 length, char* buffer) const;
+
+
+ uchar ByteAt(int32 offset) const;
+
+
+ int32 CountLines() const;
+
+
+ int32 CurrentLine() const;
+
+
+ void GoToLine(int32 lineNum);
+
+
+ virtual void Cut(BClipboard* clipboard);
+
+
+ virtual void Copy(BClipboard* clipboard);
+
+
+ virtual void Paste(BClipboard* clipboard);
+
+
+ void Clear();
+
+
+ virtual bool AcceptsPaste(BClipboard* clipboard);
+
+
+ virtual bool AcceptsDrop(const BMessage* inMessage);
+
+
+ virtual void Select(int32 startOffset, int32 endOffset);
+
+
+ void SelectAll();
+
+
+ void GetSelection(int32* outStart, int32* outEnd) const;
+
+
+ void SetFontAndColor(const BFont* inFont, uint32 inMode = B_FONT_ALL, const rgb_color* inColor = NULL);
+
+
+ void SetFontAndColor(int32 startOffset, int32 endOffset, const BFont* inFont, uint32 inMode = B_FONT_ALL, const rgb_color* inColor = NULL);
+
+
+ void GetFontAndColor(int32 inOffset, BFont* outFont, rgb_color* outColor = NULL) const;
+
+
+ void GetFontAndColor(BFont* outFont, uint32* outMode, rgb_color* outColor = NULL, bool* outEqColor = NULL) const;
+
+
+ void SetRunArray(int32 startOffset, int32 endOffset, const text_run_array* inRuns);
+
+
+ text_run_array* RunArray(int32 startOffset, int32 endOffset, int32* outSize = NULL) const;
+
+
+ int32 LineAt(int32 offset) const;
+
+
+ int32 LineAt(BPoint point) const;
+
+
+ BPoint PointAt(int32 inOffset, float* outHeight = NULL) const;
+
+
+ int32 OffsetAt(BPoint point) const;
+
+
+ int32 OffsetAt(int32 line) const;
+
+
+ virtual void FindWord(int32 inOffset, int32* outFromOffset, int32* outToOffset);
+
+
+ virtual bool CanEndLine(int32 offset);
+
+
+ float LineWidth(int32 lineNum = 0) const;
+
+
+ float LineHeight(int32 lineNum = 0) const;
+
+
+ float TextHeight(int32 startLine, int32 endLine) const;
+
+
+ void GetTextRegion(int32 startOffset, int32 endOffset, BRegion* outRegion) const;
+
+
+ virtual void ScrollToOffset(int32 inOffset);
+
+
+ void ScrollToSelection();
+
+
+ void Highlight(int32 startOffset, int32 endOffset);
+
+
+ void SetTextRect(BRect rect);
+
+
+ BRect TextRect() const;
+
+
+ void SetStylable(bool stylable);
+
+
+ bool IsStylable() const;
+
+
+ void SetTabWidth(float width);
+
+
+ float TabWidth() const;
+
+
+ void MakeSelectable(bool selectable = true);
+
+
+ bool IsSelectable() const;
+
+
+ void MakeEditable(bool editable = true);
+
+
+ bool IsEditable() const;
+
+
+ void SetWordWrap(bool wrap);
+
+
+ bool DoesWordWrap() const;
+
+
+ void SetMaxBytes(int32 max);
+
+
+ int32 MaxBytes() const;
+
+
+ void DisallowChar(uint32 aChar);
+
+
+ void AllowChar(uint32 aChar);
+
+
+ void SetAlignment(alignment flag);
+
+
+ alignment Alignment() const;
+
+
+ void SetAutoindent(bool state);
+
+
+ bool DoesAutoindent() const;
+
+
+ void SetColorSpace(color_space colors);
+
+
+ color_space ColorSpace() const;
+
+
+ void MakeResizable(bool resize, BView* resizeView = NULL);
+
+
+ bool IsResizable() const;
+
+
+ void SetDoesUndo(bool undo);
+
+
+ bool DoesUndo() const;
+
+
+ void HideTyping(bool enabled);
+
+
+ bool IsTypingHidden(void) const;
+
+
+ virtual void ResizeToPreferred();
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+
+
+ virtual void AllAttached();
+
+
+ virtual void AllDetached();
+
+
+ static void* FlattenRunArray(const text_run_array* inArray, int32* outSize = NULL);
+
+
+ static text_run_array* UnflattenRunArray(const void *data, int32* outSize = NULL);
+
+
+ virtual void InsertText(const char* inText, int32 inLength, int32 inOffset, const text_run_array* inRuns);
+
+
+ virtual void DeleteText(int32 fromOffset, int32 toOffset);
+
+
+ virtual void Undo(BClipboard* clipboard);
+
+
+ undo_state UndoState(bool* isRedo) const;
+
+
+ virtual void GetDragParameters(BMessage* drag, BBitmap** bitmap, BPoint* point, BHandler** handler);
+
+
+
+
+ BTextControl(BRect frame, const char* name, const char* label, const char* initial_text, BMessage* message, uint32 rmask = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW | B_NAVIGABLE);
+
+
+ BTextControl(BMessage* data);
+
+
+ virtual ~BTextControl();
+
+
+ static BArchivable* Instantiate(BMessage* data);
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+
+ virtual void SetText(const char* text);
+
+
+ const char* Text() const;
+
+
+ virtual void SetValue(int32 value);
+
+
+ virtual status_t Invoke(BMessage* msg = NULL);
+
+
+ BTextView* TextView() const;
+
+
+ virtual void SetModificationMessage(BMessage* message);
+
+
+ BMessage* ModificationMessage() const;
+
+
+ virtual void SetAlignment(alignment label, alignment text);
+
+
+ void GetAlignment(alignment* label, alignment* text) const;
+
+
+ virtual void SetDivider(float dividing_line);
+
+
+ float Divider() const;
+
+
+ virtual void Draw(BRect updateRect);
+
+
+ virtual void MouseDown(BPoint where);
+
+
+ virtual void AttachedToWindow();
+
+
+ virtual void MakeFocus(bool focusState = true);
+
+
+ virtual void SetEnabled(bool state);
+
+
+ virtual void FrameMoved(BPoint new_position);
+
+
+ virtual void FrameResized(float new_width, float new_height);
+
+
+ virtual void WindowActivated(bool active);
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+
+
+ virtual void ResizeToPreferred();
+
+
+ virtual void MessageReceived(BMessage* msg);
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+
+
+ virtual void MouseUp(BPoint pt);
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* msg);
+
+
+ virtual void DetachedFromWindow();
+
+
+ virtual void AllAttached();
+
+
+ virtual void AllDetached();
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+
+
+ virtual void SetFlags(uint32 flags);
+
+
+
+
+
+
+ BAlert(const char *title, const char *text, const char *button1, const char *button2 = NULL, const char *button3 = NULL, button_width width = B_WIDTH_AS_USUAL, alert_type type = B_INFO_ALERT);
+
+
+ BAlert(const char *title, const char *text, const char *button1, const char *button2, const char *button3, button_width width, button_spacing spacing, alert_type type = B_INFO_ALERT);
+
+
+ BAlert(BMessage *data);
+
+
+ ~BAlert();
+
+
+ static BArchivable *Instantiate(BMessage *data);
+
+
+ virtual status_t Archive(BMessage *data, bool deep = true) const;
+
+
+ void SetShortcut(int32 button_index, char key);
+
+
+ char Shortcut(int32 button_index) const;
+
+
+ int32 Go();
+
+
+ status_t Go(BInvoker *invoker);
+
+
+ virtual void MessageReceived(BMessage *an_event);
+
+
+ virtual void FrameResized(float new_width, float new_height);
+
+
+ BButton* ButtonAt(int32 index) const;
+
+
+ BTextView* TextView() const;
+
+
+ virtual BHandler* ResolveSpecifier(BMessage *msg, int32 index, BMessage* specifier, int32 form, const char* property);
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+
+
+ virtual void DispatchMessage(BMessage* msg, BHandler* handler);
+
+
+ virtual void Quit();
+
+
+ virtual bool QuitRequested();
+
+
+ static BPoint AlertPosition(float width, float height);
+
+
+
+
+ BDeskbar();
+
+
+ ~BDeskbar();
+
+
+ BRect Frame() const;
+
+
+ deskbar_location Location(bool* isExpanded=NULL) const;
+
+
+ status_t SetLocation(deskbar_location location, bool expanded=false);
+
+
+ bool IsExpanded() const;
+
+
+ status_t Expand(bool yn);
+
+
+ status_t GetItemInfo(int32 id, const char** name) const;
+
+
+ status_t GetItemInfo(const char* name, int32* id) const;
+
+
+ bool HasItem(int32 id) const;
+
+
+ bool HasItem(const char* name) const;
+
+
+ uint32 CountItems() const;
+
+
+ status_t AddItem(BView* archivableView, int32* id=NULL);
+
+
+ status_t AddItem(entry_ref* addon, int32* id=NULL);
+
+
+ status_t RemoveItem(int32 id);
+
+
+ status_t RemoveItem(const char* name);
+
+
+
+
+ unicode_block();
+
+
+ unicode_block(uint64 block2, uint64 block1);
+
+
+ bool Includes(const unicode_block &block) const;
+
+
+ unicode_block operator&(const unicode_block &block) const;
+
+
+ unicode_block operator|(const unicode_block &block) const;
+
+
+ unicode_block& operator=(const unicode_block &block);
+
+
+ bool operator==(const unicode_block &block) const;
+
+
+ bool operator!=(const unicode_block &block) const;
+
+
+
+
+ status_t get_deskbar_frame(BRect* frame);
+
+
+
+
+ status_t get_mouse_type(int32* type);
+
+
+ status_t set_mouse_type(int32 type);
+
+
+ status_t get_mouse_map(mouse_map* map);
+
+
+ status_t set_mouse_map(mouse_map* map);
+
+
+ status_t get_click_speed(bigtime_t* speed);
+
+
+ status_t set_click_speed(bigtime_t speed);
+
+
+ status_t get_mouse_speed(int32* speed);
+
+
+ status_t set_mouse_speed(int32 speed);
+
+
+ status_t get_mouse_acceleration(int32* speed);
+
+
+ status_t set_mouse_acceleration(int32 speed);
+
+
+ void set_focus_follows_mouse(bool follow);
+
+
+ bool focus_follows_mouse();
+
+
+ void set_mouse_mode(mode_mouse mode);
+
+
+ mode_mouse mouse_mode();
+
+
+
+
+ int32 count_workspaces();
+
+
+ void set_workspace_count(int32 count);
+
+
+ int32 current_workspace();
+
+
+ void activate_workspace(int32 workspace);
+
+
+
+
+ status_t get_key_repeat_rate(int32* rate);
+
+
+ status_t set_key_repeat_rate(int32 rate);
+
+
+ status_t get_key_repeat_delay(bigtime_t* delay);
+
+
+ status_t set_key_repeat_delay(bigtime_t delay);
+
+
+ uint32 modifiers();
+
+
+ status_t get_key_info(key_info* info);
+
+
+ void get_key_map(key_map** map, char** key_buffer);
+
+
+ status_t get_keyboard_id(uint16* id);
+
+
+ void set_modifier_key(uint32 modifier, uint32 key);
+
+
+ void set_keyboard_locks(uint32 modifiers);
+
+
+
+
+ rgb_color keyboard_navigation_color();
+
+
+ rgb_color ui_color(color_which which);
+
+
+ rgb_color tint_color(rgb_color color, float tint);
+
+
+
+
+ bigtime_t idle_time();
+
+
+ void run_select_printer_panel();
+
+
+ void run_add_printer_panel();
+
+
+ void run_be_about();
+
+
+ status_t _init_interface_kit_();
+
+
+ void _ReservedShelf1__6BShelfFv(BShelf* const, int32, const BMessage*, const BView*);
+
+
+ uint32 _rule_(uint32 r1, uint32 r2, uint32 r3, uint32 r4);
+
+
+
+
+
+
+ BDragger(BRect bounds, BView* target, uint32 rmask = B_FOLLOW_NONE, uint32 flags = B_WILL_DRAW);
+
+
+ BDragger(BMessage* data);
+
+
+ virtual ~BDragger();
+
+
+ static BArchivable* Instantiate(BMessage* data);
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+
+ virtual void AttachedToWindow();
+
+
+ virtual void DetachedFromWindow();
+
+
+ virtual void Draw(BRect update);
+
+
+ virtual void MouseDown(BPoint where);
+
+
+ virtual void MouseUp(BPoint pt);
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* msg);
+
+
+ virtual void MessageReceived(BMessage* msg);
+
+
+ virtual void FrameMoved(BPoint new_position);
+
+
+ virtual void FrameResized(float new_width, float new_height);
+
+
+ static status_t ShowAllDraggers(); /* system wide!*/
+
+
+ static status_t HideAllDraggers(); /* system wide!*/
+
+
+ static bool AreDraggersDrawn();
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+
+
+ virtual status_t Perform(perform_code d, void* arg);
+
+
+ virtual void ResizeToPreferred();
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+
+
+ virtual void MakeFocus(bool state = true);
+
+
+ virtual void AllAttached();
+
+
+ virtual void AllDetached();
+
+
+ status_t SetPopUp(BPopUpMenu* context_menu);
+
+
+ BPopUpMenu* PopUp() const;
+
+
+ bool InShelf() const;
+
+
+ BView* Target() const;
+
+
+ virtual BBitmap* DragBitmap(BPoint* offset, drawing_mode* mode);
+
+
+ bool IsVisibilityChanging() const;
+
+
+
+
+ BShelf(BView* view, bool allow_drags = true, const char* shelf_type = NULL);
+
+
+ BShelf(const entry_ref* ref, BView* view, bool allow_drags = true, const char* shelf_type = NULL);
+
+
+ BShelf(BDataIO* stream, BView* view, bool allow_drags = true, const char* shelf_type = NULL);
+
+
+ BShelf(BMessage* data);
+
+
+ virtual ~BShelf();
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+
+ static BArchivable* Instantiate(BMessage* data);
+
+
+ virtual void MessageReceived(BMessage* msg);
+
+
+ status_t Save();
+
+
+ virtual void SetDirty(bool state);
+
+
+ bool IsDirty() const;
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+
+
+ virtual status_t Perform(perform_code d, void* arg);
+
+
+ bool AllowsDragging() const;
+
+
+ void SetAllowsDragging(bool state);
+
+
+ bool AllowsZombies() const;
+
+
+ void SetAllowsZombies(bool state);
+
+
+ bool DisplaysZombies() const;
+
+
+ void SetDisplaysZombies(bool state);
+
+
+ bool IsTypeEnforced() const;
+
+
+ void SetTypeEnforced(bool state);
+
+
+ status_t SetSaveLocation(BDataIO* data_io);
+
+
+ status_t SetSaveLocation(const entry_ref* ref);
+
+
+ BDataIO* SaveLocation(entry_ref* ref) const;
+
+
+ status_t AddReplicant(BMessage* data, BPoint location);
+
+
+ status_t DeleteReplicant(BView* replicant);
+
+
+ status_t DeleteReplicant(BMessage* data);
+
+
+ status_t DeleteReplicant(int32 index);
+
+
+ int32 CountReplicants() const;
+
+
+ BMessage* ReplicantAt(int32 index, BView** view = NULL, uint32* uid = NULL, status_t* perr = NULL) const;
+
+
+ int32 IndexOf(const BView* replicant_view) const;
+
+
+ int32 IndexOf(const BMessage* archive) const;
+
+
+ int32 IndexOf(uint32 id) const;
+
+
+ virtual bool CanAcceptReplicantMessage(BMessage*) const;
+
+
+ virtual bool CanAcceptReplicantView(BRect, BView*, BMessage*) const;
+
+
+ virtual BPoint AdjustReplicantBy(BRect, BMessage*) const;
+
+
+ virtual void ReplicantDeleted(int32 index, const BMessage* archive, const BView* replicant);
+
+
+
+
+
+
+ BChannelControl(BRect frame, const char * name, const char * label, BMessage * model, int32 channel_count = 1, uint32 resize = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW);
+
+
+ BChannelControl(BMessage* from);
+
+
+ virtual ~BChannelControl();
+
+
+ virtual status_t Archive(BMessage* into, bool deep = true) const;
+
+
+ virtual void Draw(BRect area) = 0;
+
+
+ virtual void MouseDown(BPoint where) = 0;
+
+
+ virtual void KeyDown(const char* bytes, int32 size) = 0;
+
+
+ virtual void FrameResized(float width, float height);
+
+
+ virtual void SetFont(const BFont* font, uint32 mask = B_FONT_ALL);
+
+
+ virtual void AttachedToWindow();
+
+
+ virtual void DetachedFromWindow();
+
+
+ virtual void ResizeToPreferred();
+
+
+ virtual void GetPreferredSize(float* width, float* height) = 0;
+
+
+ virtual void MessageReceived(BMessage* message);
+
+
+ virtual BHandler *ResolveSpecifier(BMessage *msg, int32 index, BMessage *specifier, int32 form, const char *property);
+
+
+ virtual status_t GetSupportedSuites(BMessage *data);
+
+
+ virtual void SetModificationMessage(BMessage *message);
+
+
+ BMessage *ModificationMessage() const;
+
+
+ virtual status_t Invoke(BMessage *msg = NULL);
+
+
+ virtual status_t InvokeChannel(BMessage *msg = NULL, int32 from_channel = 0, int32 channel_count = -1, const bool* in_mask = NULL);
+
+
+ status_t InvokeNotifyChannel(BMessage *msg = NULL, uint32 kind = B_CONTROL_INVOKED, int32 from_channel = 0, int32 channel_count = -1, const bool* in_mask = NULL);
+
+
+ virtual voidSetValue(int32 value);
+
+
+ virtual status_t SetCurrentChannel(int32 channel);
+
+
+ int32 CurrentChannel() const;
+
+
+ virtual int32 CountChannels() const;
+
+
+ virtual int32 MaxChannelCount() const = 0;
+
+
+ virtual status_t SetChannelCount(int32 channel_count);
+
+
+ int32 ValueFor(int32 channel) const;
+
+
+ virtual int32 GetValue(int32* out_values, int32 from_channel, int32 channel_count) const;
+
+
+ status_t SetValueFor(int32 channel, int32 value);
+
+
+ virtual status_t SetValue(int32 from_channel, int32 channel_count, const int32* in_values);
+
+
+ status_t SetAllValue(int32 values);
+
+
+ status_t SetLimitsFor(int32 channel, int32 minimum, int32 maximum);
+
+
+ status_t GetLimitsFor(int32 channel, int32* minimum, int32* maximum) const ;
+
+
+ virtual status_t SetLimitsFor(int32 from_channel, int32 channel_count, const int32* minimum, const int32* maximum);
+
+
+ virtual status_t GetLimitsFor(int32 from_channel, int32 channel_count, int32* minimum, int32* maximum) const;
+
+
+ status_t SetLimits(int32 minimum, int32 maximum);
+
+
+ status_t GetLimits(int32* outMinimum, int32* outMaximum) const;
+
+
+ virtual bool SupportsIndividualLimits() const = 0;
+
+
+ virtual status_t SetLimitLabels(const char* min_label, const char* max_label);
+
+
+ const char* MinLimitLabel() const;
+
+
+ const char* MaxLimitLabel() const;
+
+
+ virtual status_t SetLimitLabelsFor(int32 channel, const char* minLabel, const char* maxLabel);
+
+
+ virtual status_t SetLimitLabelsFor(int32 from_channel, int32 channel_count, const char* minLabel, const char* maxLabel);
+
+
+ const char* MinLimitLabelFor(int32 channel) const;
+
+
+ const char* MaxLimitLabelFor(int32 channel) const;
+
+
+
+
+ BChannelSlider(BRect area, const char* name, const char* label, BMessage* model, int32 channels = 1, uint32 resize = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW);
+
+
+ BChannelSlider(BRect area, const char* name, const char* label, BMessage* model, orientation o, int32 channels = 1, uint32 resize = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW);
+
+
+ BChannelSlider(BMessage* from);
+
+
+ virtual ~BChannelSlider();
+
+
+ static BArchivable* Instantiate(BMessage* from);
+
+
+ virtual status_t Archive(BMessage* into, bool deep = true) const;
+
+
+ virtual orientation Orientation() const;
+
+
+ void SetOrientation(orientation o);
+
+
+ virtual int32 MaxChannelCount() const;
+
+
+ virtual bool SupportsIndividualLimits() const;
+
+
+ virtual void AttachedToWindow();
+
+
+ virtual void AllAttached();
+
+
+ virtual void DetachedFromWindow();
+
+
+ virtual void AllDetached();
+
+
+ virtual void MessageReceived(BMessage* msg);
+
+
+ virtual void Draw(BRect area);
+
+
+ virtual void MouseDown(BPoint where);
+
+
+ virtual void MouseUp(BPoint pt);
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* message);
+
+
+ virtual void WindowActivated(bool state);
+
+
+ virtual void KeyDown(const char* bytes, int32 numBytes);
+
+
+ virtual void KeyUp(const char* bytes, int32 numBytes);
+
+
+ virtual void FrameResized(float width, float height);
+
+
+ virtual void SetFont(const BFont* font, uint32 mask = B_FONT_ALL);
+
+
+ virtual void MakeFocus(bool focusState = true);
+
+
+ virtual void SetEnabled(bool on);
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+
+
+ virtual void DrawChannel(BView* into, int32 channel, BRect area, bool pressed);
+
+
+ virtual void DrawGroove(BView* into, int32 channel, BPoint tl, BPoint br);
+
+
+ virtual void DrawThumb(BView* into, int32 channel, BPoint where, bool pressed );
+
+
+ virtual const BBitmap* ThumbFor(int32 channel, bool pressed);
+
+
+ virtual BRect ThumbFrameFor(int32 channel);
+
+
+ virtual float ThumbDeltaFor(int32 channel);
+
+
+ virtual float ThumbRangeFor(int32 channel);
+
+
+
+
+ BMultiChannelControl(BRect frame, const char* name, const char* label, BMessage* model, int32 channel_count = 1, uint32 resize = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW);
+
+
+ BMultiChannelControl(BMessage* from);
+
+
+ virtual ~BMultiChannelControl();
+
+
+ virtual status_t Archive(BMessage* into, bool deep = true) const;
+
+
+ virtual void Draw(BRect area) = 0;
+
+
+ virtual void MouseDown(BPoint where) = 0;
+
+
+ virtual void KeyDown(const char* bytes, int32 size) = 0;
+
+
+ virtual void FrameResized(float width, float height);
+
+
+ virtual void SetFont(const BFont* font, uint32 mask = B_FONT_ALL);
+
+
+ virtual void AttachedToWindow();
+
+
+ virtual void DetachedFromWindow();
+
+
+ virtual void ResizeToPreferred();
+
+
+ virtual void GetPreferredSize(float* width, float* height) = 0;
+
+
+ virtual void MessageReceived(BMessage* message);
+
+
+ virtual void SetValue(int32 value);
+
+
+ virtual status_t SetCurrentChannel(int32 channel);
+
+
+ int32 CurrentChannel() const;
+
+
+ virtual int32 CountChannels() const;
+
+
+ virtual int32 MaxChannelCount() const = 0;
+
+
+ virtual status_t SetChannelCount(int32 channel_count);
+
+
+ int32 ValueFor(int32 channel) const;
+
+
+ virtual int32 GetValues(int32* out_values, int32 from_channel, int32 channel_count) const;
+
+
+ status_t SetValueFor(int32 channel, int32 value);
+
+
+ virtual status_t SetValues(int32 from_channel, int32 channel_count, const int32* in_values);
+
+
+ status_t SetAllValues(int32 values);
+
+
+ status_t SetLimitsFor(int32 channel, int32 minimum, int32 maximum);
+
+
+ status_t GetLimitsFor(int32 channel, int32* minimum, int32* maximum) const ;
+
+
+ virtual status_t SetLimits(int32 from_channel, int32 channel_count, const int32* minimum, const int32* maximum);
+
+
+ virtual status_t GetLimits(int32 from_channel, int32 channel_count, int32* minimum, int32* maximum) const;
+
+
+ status_t SetAllLimits(int32 minimum, int32 maximum);
+
+
+ virtual status_t SetLimitLabels(const char* min_label, const char* max_label);
+
+
+ const char* MinLimitLabel() const;
+
+
+ const char* MaxLimitLabel() const;
+
+
+
+
+ BOptionControl(BRect frame, const char* name, const char* label, BMessage* message, uint32 resize = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW);
+
+
+ virtual ~BOptionControl();
+
+
+ virtual void MessageReceived(BMessage* message);
+
+
+ status_t AddOption(const char* name, int32 value);
+
+
+ virtual boolGetOptionAt(int32 index, const char** out_name, int32* out_value) = 0;
+
+
+ virtual void RemoveOptionAt(int32 index) = 0;
+
+
+ virtual int32 CountOptions() const = 0;
+
+
+ virtual status_tAddOptionAt(const char* name, int32 value, int32 index) = 0;
+
+
+ virtual int32 SelectedOption(const char** name = 0, int32* value = 0) const = 0;
+
+
+ virtual status_t SelectOptionFor(int32 value);
+
+
+ virtual status_t SelectOptionFor(const char *name);
+
+
+ BMessage* MakeValueMessage(int32 value);
+
+
+
+
+ BOptionPopUp(BRect frame, const char* name, const char* label, BMessage* message, uint32 resize = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW);
+
+
+ BOptionPopUp(BRect frame, const char* name, const char* label, BMessage* message, bool fixed, uint32 resize = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW);
+
+
+ ~BOptionPopUp();
+
+
+ BMenuField* MenuField();
+
+
+ virtual bool GetOptionAt(int32 index, const char** out_name, int32* out_value);
+
+
+ virtual void RemoveOptionAt(int32 index);
+
+
+ virtual int32 CountOptions() const;
+
+
+ virtual status_t AddOptionAt(const char* name, int32 value, int32 index);
+
+
+ virtual void AllAttached();
+
+
+ virtual void MessageReceived(BMessage* message);
+
+
+ virtual void SetLabel(const char* text);
+
+
+ virtual void SetValue(int32 value);
+
+
+ virtual voidSetEnabled(bool on);
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+
+
+ virtual void ResizeToPreferred();
+
+
+ virtual int32 SelectedOption(const char** outName = 0, int32* outValue = 0) const;
+
+
+
+
+
+
+
+
+ BArchivable();
+
+
+ BArchivable(BMessage* from);
+
+
+ ~BArchivable();
+
+
+ virtual status_t Archive(BMessage* into, bool deep = true) const;
+
+
+ static BArchivable* Instantiate(BMessage* from);
+
+
+ virtual status_t Perform(perform_code d, void* arg); ???
+
+
+
+
+ BArchivable* instantiate_object(BMessage* from, image_id* id);
+
+
+ BArchivable* instantiate_object(BMessage* from);
+
+
+ bool validate_instantiation(BMessage* from, const char* class_name);
+
+
+ instantiation_func find_instantiation_func(const char* class_name, const char* sig);
+
+
+ instantiation_func find_instantiation_func(const char* class_name);
+
+
+ instantiation_func find_instantiation_func(BMessage* archive_data);
+
+
+
+
+
+
+ BApplication(const char* signature);
+
+
+ BApplication(const char* signature, status_t* error);
+
+
+ BApplication(BMessage* data);
+
+
+ virtual ~BApplication();
+
+
+ static BArchivable* Instantiate(BMessage* data);
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+
+ status_t InitCheck() const;
+
+
+ virtual thread_id Run();
+
+
+ virtual void Quit();
+
+
+ virtual bool QuitRequested();
+
+
+ virtual void Pulse();
+
+
+ virtual void ReadyToRun();
+
+
+ virtual void MessageReceived(BMessage* msg);
+
+
+ virtual void ArgvReceived(int32 argc, char** argv);
+
+
+ virtual void AppActivated(bool active);
+
+
+ virtual void RefsReceived(BMessage* a_message);
+
+
+ virtual void AboutRequested();
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+
+
+ void ShowCursor();
+
+
+ void HideCursor();
+
+
+ void ObscureCursor();
+
+
+ bool IsCursorHidden() const;
+
+
+ void SetCursor(const void* cursor);
+
+
+ void SetCursor(const BCursor* cursor, bool sync=true);
+
+
+ int32 CountWindows() const;
+
+
+ BWindow* WindowAt(int32 index) const;
+
+
+ int32 CountLoopers() const;
+
+
+ BLooper* LooperAt(int32 index) const;
+
+
+ bool IsLaunching() const;
+
+
+ status_t GetAppInfo(app_info* info) const;
+
+
+ static BResources* AppResources();
+
+
+ virtual void DispatchMessage(BMessage* an_event, BHandler* handler);
+
+
+ void SetPulseRate(bigtime_t rate);
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+
+
+
+
+
+
+ BWindow(BRect frame, const char* title, window_type type, uint32 flags, uint32 workspace = B_CURRENT_WORKSPACE);
+
+
+ BWindow(BRect frame, const char* title, window_look look, window_feel feel, uint32 flags, uint32 workspace = B_CURRENT_WORKSPACE);
+
+
+ BWindow(BMessage* data);
+
+
+ virtual ~BWindow();
+
+
+ static BArchivable* Instantiate(BMessage* data);
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+
+ virtual void Quit();
+
+
+ void Close();
+
+
+ void AddChild(BView* child, BView* before = NULL);
+
+
+ bool RemoveChild(BView* child);
+
+
+ int32 CountChildren() const;
+
+
+ BView* ChildAt(int32 index) const;
+
+
+ virtual void DispatchMessage(BMessage* message, BHandler* handler);
+
+
+ virtual void MessageReceived(BMessage* message);
+
+
+ virtual void FrameMoved(BPoint new_position);
+
+
+ virtual void WorkspacesChanged(uint32 old_ws, uint32 new_ws);
+
+
+ virtual void WorkspaceActivated(int32 ws, bool state);
+
+
+ virtual void FrameResized(float new_width, float new_height);
+
+
+ virtual void Minimize(bool minimize);
+
+
+ virtual void Zoom(BPoint rec_position, float rec_width, float rec_height);
+
+
+ void Zoom();
+
+
+ void SetZoomLimits(float max_h, float max_v);
+
+
+ virtual void ScreenChanged(BRect screen_size, color_space depth);
+
+
+ void SetPulseRate(bigtime_t rate);
+
+
+ bigtime_t PulseRate() const;
+
+
+ void AddShortcut(uint32 key, uint32 modifiers, BMessage* msg);
+
+
+ void AddShortcut(uint32 key, uint32 modifiers, BMessage* msg, BHandler* target);
+
+
+ void RemoveShortcut(uint32 key, uint32 modifiers);
+
+
+ void SetDefaultButton(BButton* button);
+
+
+ BButton* DefaultButton() const;
+
+
+ virtual void MenusBeginning();
+
+
+ virtual void MenusEnded();
+
+
+ bool NeedsUpdate() const;
+
+
+ void UpdateIfNeeded();
+
+
+ BView* FindView(const char* view_name) const;
+
+
+ BView* FindView(BPoint) const;
+
+
+ BView* CurrentFocus() const;
+
+
+ void Activate(bool = true);
+
+
+ virtual void WindowActivated(bool state);
+
+
+ void ConvertToScreen(BPoint* pt) const;
+
+
+ BPoint ConvertToScreen(BPoint pt) const;
+
+
+ void ConvertFromScreen(BPoint* pt) const;
+
+
+ BPoint ConvertFromScreen(BPoint pt) const;
+
+
+ void ConvertToScreen(BRect* rect) const;
+
+
+ BRect ConvertToScreen(BRect rect) const;
+
+
+ void ConvertFromScreen(BRect* rect) const;
+
+
+ BRect ConvertFromScreen(BRect rect) const;
+
+
+ void MoveBy(float dx, float dy);
+
+
+ void MoveTo(BPoint);
+
+
+ void MoveTo(float x, float y);
+
+
+ void ResizeBy(float dx, float dy);
+
+
+ void ResizeTo(float width, float height);
+
+
+ virtual void Show();
+
+
+ virtual void Hide();
+
+
+ bool IsHidden() const;
+
+
+ bool IsMinimized() const;
+
+
+ void Flush() const;
+
+
+ void Sync() const;
+
+
+ status_t SendBehind(const BWindow* window);
+
+
+ void DisableUpdates();
+
+
+ void EnableUpdates();
+
+
+ void BeginViewTransaction();
+
+
+ void EndViewTransaction();
+
+
+ BRect Bounds() const;
+
+
+ BRect Frame() const;
+
+
+ const char* Title() const;
+
+
+ void SetTitle(const char* title);
+
+
+ bool IsFront() const;
+
+
+ bool IsActive() const;
+
+
+ void SetKeyMenuBar(BMenuBar* bar);
+
+
+ BMenuBar* KeyMenuBar() const;
+
+
+ void SetSizeLimits(float min_h, float max_h, float min_v, float max_v);
+
+
+ void GetSizeLimits(float* min_h, float* max_h, float* min_v, float* max_v);
+
+
+ uint32 Workspaces() const;
+
+
+ void SetWorkspaces(uint32);
+
+
+ BView* LastMouseMovedView() const;
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+
+
+ status_t AddToSubset(BWindow* window);
+
+
+ status_t RemoveFromSubset(BWindow* window);
+
+
+ virtual status_t Perform(perform_code d, void* arg);
+
+
+ status_t SetType(window_type type);
+
+
+ window_type Type() const;
+
+
+ status_t SetLook(window_look look);
+
+
+ window_look Look() const;
+
+
+ status_t SetFeel(window_feel feel);
+
+
+ window_feel Feel() const;
+
+
+ status_t SetFlags(uint32);
+
+
+ uint32 Flags() const;
+
+
+ bool IsModal() const;
+
+
+ bool IsFloating() const;
+
+
+ status_t SetWindowAlignment(window_alignment mode, int32 h, int32 hOffset = 0, int32 width = 0, int32 widthOffset = 0, int32 v = 0, int32 vOffset = 0, int32 height = 0, int32 heightOffset = 0);
+
+
+ status_t GetWindowAlignment(window_alignment* mode = NULL, int32* h = NULL, int32* hOffset = NULL, int32* width = NULL, int32* widthOffset = NULL, int32* v = NULL, int32* vOffset = NULL, int32* height = NULL, int32* heightOffset = NULL) const;
+
+
+ virtual bool QuitRequested();
+
+
+ virtual thread_id Run();
+
+
+ virtual void task_looper();
+
+
+
+
+
+
+ BView(BRect frame, const char* name, uint32 resizeMask, uint32 flags);
+
+
+ BView(BMessage* data);
+
+
+ virtual ~BView();
+
+
+ static BArchivable* Instantiate(BMessage* data);
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+
+ virtual void AttachedToWindow();
+
+
+ virtual void AllAttached();
+
+
+ virtual void DetachedFromWindow();
+
+
+ virtual void AllDetached();
+
+
+ virtual void MessageReceived(BMessage* msg);
+
+
+ void AddChild(BView* child, BView* before = NULL);
+
+
+ bool RemoveChild(BView* child);
+
+
+ int32 CountChildren() const;
+
+
+ BView* ChildAt(int32 index) const;
+
+
+ BView* NextSibling() const;
+
+
+ BView* PreviousSibling() const;
+
+
+ bool RemoveSelf();
+
+
+ BWindow* Window() const;
+
+
+ virtual void Draw(BRect updateRect);
+
+
+ virtual void MouseDown(BPoint where);
+
+
+ virtual void MouseUp(BPoint where);
+
+
+ virtual void MouseMoved(BPoint where, uint32 code, const BMessage* a_message);
+
+
+ virtual void WindowActivated(bool state);
+
+
+ virtual void KeyDown(const char* bytes, int32 numBytes);
+
+
+ virtual void KeyUp(const char* bytes, int32 numBytes);
+
+
+ virtual void Pulse();
+
+
+ virtual void FrameMoved(BPoint new_position);
+
+
+ virtual void FrameResized(float new_width, float new_height);
+
+
+ virtual void TargetedByScrollView(BScrollView* scroll_view);
+
+
+ void BeginRectTracking(BRect startRect, uint32 style = B_TRACK_WHOLE_RECT);
+
+
+ void EndRectTracking();
+
+
+ void GetMouse(BPoint* location, uint32* buttons, bool checkMessageQueue = true);
+
+
+ void DragMessage(BMessage* aMessage, BRect dragRect, BHandler* reply_to = NULL);
+
+
+ void DragMessage(BMessage* aMessage, BBitmap* anImage, BPoint offset, BHandler* reply_to = NULL);
+
+
+ void DragMessage(BMessage* aMessage, BBitmap* anImage, drawing_mode dragMode, BPoint offset, BHandler* reply_to = NULL);
+
+
+ BView* FindView(const char* name) const;
+
+
+ BView* Parent() const;
+
+
+ BRect Bounds() const;
+
+
+ BRect Frame() const;
+
+
+ void ConvertToScreen(BPoint* pt) const;
+
+
+ BPoint ConvertToScreen(BPoint pt) const;
+
+
+ void ConvertFromScreen(BPoint* pt) const;
+
+
+ BPoint ConvertFromScreen(BPoint pt) const;
+
+
+ void ConvertToScreen(BRect* r) const;
+
+
+ BRect ConvertToScreen(BRect r) const;
+
+
+ void ConvertFromScreen(BRect* r) const;
+
+
+ BRect ConvertFromScreen(BRect r) const;
+
+
+ void ConvertToParent(BPoint* pt) const;
+
+
+ BPoint ConvertToParent(BPoint pt) const;
+
+
+ void ConvertFromParent(BPoint* pt) const;
+
+
+ BPoint ConvertFromParent(BPoint pt) const;
+
+
+ void ConvertToParent(BRect* r) const;
+
+
+ BRect ConvertToParent(BRect r) const;
+
+
+ void ConvertFromParent(BRect* r) const;
+
+
+ BRect ConvertFromParent(BRect r) const;
+
+
+ BPoint LeftTop() const;
+
+
+ void GetClippingRegion(BRegion* region) const;
+
+
+ virtual void ConstrainClippingRegion(BRegion* region);
+
+
+ void ClipToPicture(BPicture* picture, BPoint where = B_ORIGIN, bool sync = true);
+
+
+ void ClipToInversePicture(BPicture* picture, BPoint where = B_ORIGIN, bool sync = true);
+
+
+ virtual void SetDrawingMode(drawing_mode mode);
+
+
+ drawing_mode DrawingMode() const;
+
+
+ void SetBlendingMode(source_alpha srcAlpha, alpha_function alphaFunc);
+
+
+ void GetBlendingMode(source_alpha* srcAlpha, alpha_function* alphaFunc) const;
+
+
+ virtual void SetPenSize(float size);
+
+
+ float PenSize() const;
+
+
+ void SetViewCursor(const BCursor* cursor, bool sync=true);
+
+
+ virtual void SetViewColor(rgb_color c);
+
+
+ void SetViewColor(uchar r, uchar g, uchar b, uchar a = 255);
+
+
+ rgb_color ViewColor() const;
+
+
+ void SetViewBitmap(const BBitmap* bitmap, BRect srcRect, BRect dstRect, uint32 followFlags=B_FOLLOW_TOP|B_FOLLOW_LEFT, uint32 options = B_TILE_BITMAP);
+
+
+ void SetViewBitmap(const BBitmap* bitmap, uint32 followFlags = B_FOLLOW_TOP|B_FOLLOW_LEFT, uint32 options = B_TILE_BITMAP);
+
+
+ void ClearViewBitmap();
+
+
+ status_t SetViewOverlay(const BBitmap* overlay, BRect srcRect, BRect dstRect, rgb_color* colorKey, uint32 followFlags = B_FOLLOW_TOP|B_FOLLOW_LEFT, uint32 options = 0);
+
+
+ status_t SetViewOverlay(const BBitmap* overlay, rgb_color* colorKey, uint32 followFlags = B_FOLLOW_TOP|B_FOLLOW_LEFT, uint32 options = 0);
+
+
+ void ClearViewOverlay();
+
+
+ virtual void SetHighColor(rgb_color a_color);
+
+
+ void SetHighColor(uchar r, uchar g, uchar b, uchar a = 255);
+
+
+ rgb_color HighColor() const;
+
+
+ virtual void SetLowColor(rgb_color a_color);
+
+
+ void SetLowColor(uchar r, uchar g, uchar b, uchar a = 255);
+
+
+ rgb_color LowColor() const;
+
+
+ void SetLineMode(cap_mode lineCap, join_mode lineJoin, float miterLimit = B_DEFAULT_MITER_LIMIT);
+
+
+ join_mode LineJoinMode() const;
+
+
+ cap_mode LineCapMode() const;
+
+
+ float LineMiterLimit() const;
+
+
+ void SetOrigin(BPoint pt);
+
+
+ void SetOrigin(float x, float y);
+
+
+ BPoint Origin() const;
+
+
+ void PushState();
+
+
+ void PopState();
+
+
+ void MovePenTo(BPoint pt);
+
+
+ void MovePenTo(float x, float y);
+
+
+ void MovePenBy(float x, float y);
+
+
+ BPoint PenLocation() const;
+
+
+ void StrokeLine(BPoint toPt, pattern p = B_SOLID_HIGH);
+
+
+ void StrokeLine(BPoint pt0, BPoint pt1, pattern p = B_SOLID_HIGH);
+
+
+ void BeginLineArray(int32 count);
+
+
+ void AddLine(BPoint pt0, BPoint pt1, rgb_color col);
+
+
+ void EndLineArray();
+
+
+ void StrokePolygon(const BPolygon* aPolygon, bool closed = true, pattern p = B_SOLID_HIGH);
+
+
+ void StrokePolygon(const BPoint* ptArray, int32 numPts, bool closed = true, pattern p = B_SOLID_HIGH);
+
+
+ void StrokePolygon(const BPoint* ptArray, int32 numPts, BRect bounds, bool closed = true, pattern p = B_SOLID_HIGH);
+
+
+ void FillPolygon(const BPolygon* aPolygon, pattern p = B_SOLID_HIGH);
+
+
+ void FillPolygon(const BPoint* ptArray, int32 numPts, pattern p = B_SOLID_HIGH);
+
+
+ void FillPolygon(const BPoint* ptArray, int32 numPts, BRect bounds, pattern p = B_SOLID_HIGH);
+
+
+ void StrokeTriangle(BPoint pt1, BPoint pt2, BPoint pt3, BRect bounds, pattern p = B_SOLID_HIGH);
+
+
+ void StrokeTriangle(BPoint pt1, BPoint pt2, BPoint pt3, pattern p = B_SOLID_HIGH);
+
+
+ void FillTriangle(BPoint pt1, BPoint pt2, BPoint pt3, pattern p = B_SOLID_HIGH);
+
+
+ void FillTriangle(BPoint pt1, BPoint pt2, BPoint pt3, BRect bounds,pattern p = B_SOLID_HIGH);
+
+
+ void StrokeRect(BRect r, pattern p = B_SOLID_HIGH);
+
+
+ void FillRect(BRect r, pattern p = B_SOLID_HIGH);
+
+
+ void FillRegion(BRegion* a_region, pattern p= B_SOLID_HIGH);
+
+
+ void InvertRect(BRect r);
+
+
+ void StrokeRoundRect(BRect r, float xRadius, float yRadius, pattern p = B_SOLID_HIGH);
+
+
+ void FillRoundRect(BRect r, float xRadius, float yRadius, pattern p = B_SOLID_HIGH);
+
+
+ void StrokeEllipse(BPoint center, float xRadius, float yRadius, pattern p = B_SOLID_HIGH);
+
+
+ void StrokeEllipse(BRect r, pattern p = B_SOLID_HIGH);
+
+
+ void FillEllipse(BPoint center, float xRadius, float yRadius, pattern p = B_SOLID_HIGH);
+
+
+ void FillEllipse(BRect r, pattern p = B_SOLID_HIGH);
+
+
+ void StrokeArc(BPoint center, float xRadius, float yRadius, float start_angle, float arc_angle, pattern p = B_SOLID_HIGH);
+
+
+ void StrokeArc(BRect r, float start_angle, float arc_angle, pattern p = B_SOLID_HIGH);
+
+
+ void FillArc(BPoint center, float xRadius, float yRadius, float start_angle, float arc_angle, pattern p = B_SOLID_HIGH);
+
+
+ void FillArc(BRect r, float start_angle, float arc_angle, pattern p = B_SOLID_HIGH);
+
+
+ void StrokeBezier(BPoint* controlPoints, pattern p = B_SOLID_HIGH);
+
+
+ void FillBezier( BPoint* controlPoints, pattern p = B_SOLID_HIGH);
+
+
+ void StrokeShape(BShape* shape, pattern p = B_SOLID_HIGH);
+
+
+ void FillShape(BShape* shape, pattern p = B_SOLID_HIGH);
+
+
+ void CopyBits(BRect src, BRect dst);
+
+
+ void DrawBitmapAsync(const BBitmap* aBitmap, BRect srcRect, BRect dstRect);
+
+
+ void DrawBitmapAsync(const BBitmap* aBitmap);
+
+
+ void DrawBitmapAsync(const BBitmap* aBitmap, BPoint where);
+
+
+ void DrawBitmapAsync(const BBitmap* aBitmap, BRect dstRect);
+
+
+ void DrawBitmap(const BBitmap* aBitmap, BRect srcRect, BRect dstRect);
+
+
+ void DrawBitmap(const BBitmap* aBitmap);
+
+
+ void DrawBitmap(const BBitmap* aBitmap, BPoint where);
+
+
+ void DrawBitmap(const BBitmap* aBitmap, BRect dstRect);
+
+
+ void DrawChar(char aChar);
+
+
+ void DrawChar(char aChar, BPoint location);
+
+
+ void DrawString(const char* aString, escapement_delta* delta = NULL);
+
+
+ void DrawString(const char* aString, BPoint location, escapement_delta* delta = NULL);
+
+
+ void DrawString(const char* aString, int32 length, escapement_delta* delta = NULL);
+
+
+ void DrawString(const char* aString, int32 length, BPoint location, escapement_delta* delta = 0L);
+
+
+ virtual void SetFont(const BFont* font, uint32 mask = B_FONT_ALL);
+
+
+ void GetFont(BFont* font) const;
+
+
+ void TruncateString(BString* in_out, uint32 mode, float width) const;
+
+
+ float StringWidth(const char* string) const;
+
+
+ float StringWidth(const char* string, int32 length) const;
+
+
+ void GetStringWidths(char* stringArray[], int32 lengthArray[], int32 numStrings, float widthArray[]) const;
+
+
+ void SetFontSize(float size);
+
+
+ void ForceFontAliasing(bool enable);
+
+
+ void GetFontHeight(font_height* height) const;
+
+
+ void Invalidate(BRect invalRect);
+
+
+ void Invalidate(const BRegion* invalRegion);
+
+
+ void Invalidate();
+
+
+ void SetDiskMode(char* filename, long offset);
+
+
+ void BeginPicture(BPicture* a_picture);
+
+
+ void AppendToPicture(BPicture* a_picture);
+
+
+ BPicture* EndPicture();
+
+
+ void DrawPicture(const BPicture* a_picture);
+
+
+ void DrawPicture(const BPicture* a_picture, BPoint where);
+
+
+ void DrawPicture(const char* filename, long offset, BPoint where);
+
+
+ void DrawPictureAsync(const BPicture* a_picture);
+
+
+ void DrawPictureAsync(const BPicture* a_picture, BPoint where);
+
+
+ void DrawPictureAsync(const char* filename, long offset, BPoint where);
+
+
+ status_t SetEventMask(uint32 mask, uint32 options=0);
+
+
+ uint32 EventMask();
+
+
+ status_t SetMouseEventMask(uint32 mask, uint32 options=0);
+
+
+ virtual void SetFlags(uint32 flags);
+
+
+ uint32 Flags() const;
+
+
+ virtual void SetResizingMode(uint32 mode);
+
+
+ uint32 ResizingMode() const;
+
+
+ void MoveBy(float dh, float dv);
+
+
+ void MoveTo(BPoint where);
+
+
+ void MoveTo(float x, float y);
+
+
+ void ResizeBy(float dh, float dv);
+
+
+ void ResizeTo(float width, float height);
+
+
+ void ScrollBy(float dh, float dv);
+
+
+ void ScrollTo(float x, float y);
+
+
+ virtual void ScrollTo(BPoint where);
+
+
+ virtual void MakeFocus(bool focusState = true);
+
+
+ bool IsFocus() const;
+
+
+ virtual void Show();
+
+
+ virtual void Hide();
+
+
+ bool IsHidden() const;
+
+
+ bool IsHidden(const BView* looking_from) const;
+
+
+ void Flush() const;
+
+
+ void Sync() const;
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+
+
+ virtual void ResizeToPreferred();
+
+
+ BScrollBar* ScrollBar(orientation posture) const;
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+
+
+ bool IsPrinting() const;
+
+
+ void SetScale(float scale) const;
+
+
+ virtual status_t Perform(perform_code d, void* arg);
+
+
+ virtual void DrawAfterChildren(BRect r);
+
+
+
+
+
+
+
+
+ BDataIO
+
+
+ virtual ~BDataIO();
+
+
+
+
+ BMallocIO();
+
+
+ virtual ~BMallocIO();
+
+
+ virtual ssize_t ReadAt(off_t pos, void *buffer, size_t size);
+
+
+ virtual ssize_t WriteAt(off_t pos, const void *buffer, size_t size);
+
+
+ virtual off_t Seek(off_t pos, uint32 seek_mode);
+
+
+ virtual off_t Position() const;
+
+
+ virtual status_t SetSize(off_t size);
+
+
+ void SetBlockSize(size_t blocksize);
+
+
+ const void* Buffer() const;
+
+
+ size_t BufferLength() const;
+
+
+
+
+ BMemoryIO(void *p, size_t len);
+
+
+ BMemoryIO(const void *p, size_t len);
+
+
+ virtual ~BMemoryIO();
+
+
+ virtual ssize_t ReadAt(off_t pos, void *buffer, size_t size);
+
+
+ virtual ssize_t WriteAt(off_t pos, const void *buffer, size_t size);
+
+
+ virtual off_t Seek(off_t pos, uint32 seek_mode);
+
+
+ virtual off_t Position() const;
+
+
+ virtual status_t SetSize(off_t size);
+
+
+
+
+ BPositionIO();
+
+
+ virtual ~BPositionIO();
+
+
+ virtual ssize_t Read(void *buffer, size_t size);
+
+
+ virtual ssize_t Write(const void *buffer, size_t size);
+
+
+ virtual status_t SetSize(off_t size);
+
+
+
+
+
+
+ convert_from_utf8
+
+
+ convert_to_utf8
+
+
+
+
+ bool operator<(const char *, const BString &);
+
+
+ bool operator<=(const char *, const BString &);
+
+
+ bool operator==(const char *, const BString &);
+
+
+ bool operator>(const char *, const BString &);
+
+
+ bool operator>=(const char *, const BString &);
+
+
+ bool operator!=(const char *, const BString &);
+
+
+ int Compare(const BString &, const BString &);
+
+
+ int ICompare(const BString &, const BString &);
+
+
+ int Compare(const BString *, const BString *);
+
+
+ int ICompare(const BString *, const BString *);
+
+
+
+
+ BList(int32 itemsPerBlock = 20);
+
+
+ BList(const BList&);
+
+
+ virtual ~BList();
+
+
+ BList& operator=(const BList &from);
+
+
+ bool AddItem(void *item);
+
+
+ bool AddItem(void *item, int32 atIndex);
+
+
+ bool AddList(BList *newItems);
+
+
+ bool AddList(BList *newItems, int32 atIndex);
+
+
+ bool RemoveItem(void *item);
+
+
+ void* RemoveItem(int32 index);
+
+
+ bool RemoveItems(int32 index, int32 count);
+
+
+ bool ReplaceItem(int32 index, void *newItem);
+
+
+ void MakeEmpty();
+
+
+ void SortItems(int (*cmp)(const void *, const void *));
+
+
+ bool SwapItems(int32 indexA, int32 indexB);
+
+
+ bool MoveItem(int32 fromIndex, int32 toIndex);
+
+
+ void* ItemAt(int32) const;
+
+
+ void* ItemAtFast(int32) const;
+
+
+ void* FirstItem() const;
+
+
+ void* LastItem() const;
+
+
+ void* Items() const;
+
+
+ bool HasItem(void *item) const;
+
+
+ int32 IndexOf(void *item) const;
+
+
+ int32 CountItems() const;
+
+
+ bool IsEmpty() const;
+
+
+ void DoForEach(bool (*func)(void *));
+
+
+ void DoForEach(bool (*func)(void *, void *), void *);
+
+
+
+
+ BString();
+
+
+ BString(const char *);
+
+
+ BString(const BString &);
+
+
+ BString(const char *, int32 maxLength);
+
+
+ ~BString();
+
+
+ const char* String() const;
+
+
+ int32 Length() const;
+
+
+ int32 CountChars() const;
+
+
+ BString& operator=(const BString &);
+
+
+ BString& operator=(const char *);
+
+
+ BString& operator=(char);
+
+
+ BString& SetTo(const char *);
+
+
+ BString& SetTo(const char *, int32 length);
+
+
+ BString& SetTo(const BString &from);
+
+
+ BString& Adopt(BString &from);
+
+
+ BString& SetTo(const BString &, int32 length);
+
+
+ BString& Adopt(BString &from, int32 length);
+
+
+ BString& SetTo(char, int32 count);
+
+
+ BString& CopyInto(BString &into, int32 fromOffset, int32 length) const;
+
+
+ void CopyInto(char *into, int32 fromOffset, int32 length) const;
+
+
+ BString& operator+=(const BString &);
+
+
+ BString& operator+=(const char *);
+
+
+ BString& operator+=(char);
+
+
+ BString& Append(const BString &);
+
+
+ BString& Append(const char *);
+
+
+ BString& Append(const BString &, int32 length);
+
+
+ BString& Append(const char *, int32 length);
+
+
+ BString& Append(char, int32 count);
+
+
+ BString& Prepend(const char *);
+
+
+ BString& Prepend(const BString &);
+
+
+ BString& Prepend(const char *, int32);
+
+
+ BString& Prepend(const BString &, int32);
+
+
+ BString& Prepend(char, int32 count);
+
+
+ BString& Insert(const char *, int32 pos);
+
+
+ BString& Insert(const char *, int32 length, int32 pos);
+
+
+ BString& Insert(const char *, int32 fromOffset, int32 length, int32 pos);
+
+
+ BString& Insert(const BString &, int32 pos);
+
+
+ BString& Insert(const BString &, int32 length, int32 pos);
+
+
+ BString& Insert(const BString &, int32 fromOffset, int32 length, int32 pos);
+
+
+ BString& Insert(char, int32 count, int32 pos);
+
+
+ BString& Truncate(int32 newLength, bool lazy = true);
+
+
+ BString& Remove(int32 from, int32 length);
+
+
+ BString& RemoveFirst(const BString &);
+
+
+ BString& RemoveLast(const BString &);
+
+
+ BString& RemoveAll(const BString &);
+
+
+ BString& RemoveFirst(const char *);
+
+
+ BString& RemoveLast(const char *);
+
+
+ BString& RemoveAll(const char *);
+
+
+ BString& RemoveSet(const char *setOfCharsToRemove);
+
+
+ BString& MoveInto(BString &into, int32 from, int32 length);
+
+
+ void MoveInto(char *into, int32 from, int32 length);
+
+
+ bool operator<(const BString &) const;
+
+
+ bool operator<=(const BString &) const;
+
+
+ bool operator==(const BString &) const;
+
+
+ bool operator>=(const BString &) const;
+
+
+ bool operator>(const BString &) const;
+
+
+ bool operator!=(const BString &) const;
+
+
+ bool operator<(const char *) const;
+
+
+ bool operator<=(const char *) const;
+
+
+ bool operator==(const char *) const;
+
+
+ bool operator>=(const char *) const;
+
+
+ bool operator>(const char *) const;
+
+
+ bool operator!=(const char *) const;
+
+
+ int Compare(const BString &) const;
+
+
+ int Compare(const char *) const;
+
+
+ int Compare(const BString &, int32 n) const;
+
+
+ int Compare(const char *, int32 n) const;
+
+
+ int ICompare(const BString &) const;
+
+
+ int ICompare(const char *) const;
+
+
+ int ICompare(const BString &, int32 n) const;
+
+
+ int ICompare(const char *, int32 n) const;
+
+
+ int32 FindFirst(const BString &) const;
+
+
+ int32 FindFirst(const char *) const;
+
+
+ int32 FindFirst(const BString &, int32 fromOffset) const;
+
+
+ int32 FindFirst(const char *, int32 fromOffset) const;
+
+
+ int32 FindFirst(char) const;
+
+
+ int32 FindFirst(char, int32 fromOffset) const;
+
+
+ int32 FindLast(const BString &) const;
+
+
+ int32 FindLast(const char *) const;
+
+
+ int32 FindLast(const BString &, int32 beforeOffset) const;
+
+
+ int32 FindLast(const char *, int32 beforeOffset) const;
+
+
+ int32 FindLast(char) const;
+
+
+ int32 FindLast(char, int32 fromOffset) const;
+
+
+ int32 IFindFirst(const BString &) const;
+
+
+ int32 IFindFirst(const char *) const;
+
+
+ int32 IFindFirst(const BString &, int32 fromOffset) const;
+
+
+ int32 IFindFirst(const char *, int32 fromOffset) const;
+
+
+ int32 IFindLast(const BString &) const;
+
+
+ int32 IFindLast(const char *) const;
+
+
+ int32 IFindLast(const BString &, int32 beforeOffset) const;
+
+
+ int32 IFindLast(const char *, int32 beforeOffset) const;
+
+
+ BString& ReplaceFirst(char replaceThis, char withThis);
+
+
+ BString& ReplaceLast(char replaceThis, char withThis);
+
+
+ BString& ReplaceAll(char replaceThis, char withThis, int32 fromOffset = 0);
+
+
+ BString& Replace(char replaceThis, char withThis, int32 maxReplaceCount, int32 fromOffset = 0);
+
+
+ BString& ReplaceFirst(const char *replaceThis, const char *withThis);
+
+
+ BString& ReplaceLast(const char *replaceThis, const char *withThis);
+
+
+ BString& ReplaceAll(const char *replaceThis, const char *withThis, int32 fromOffset = 0);
+
+
+ BString& Replace(const char *replaceThis, const char *withThis, int32 maxReplaceCount, int32 fromOffset = 0);
+
+
+ BString& IReplaceFirst(char replaceThis, char withThis);
+
+
+ BString& IReplaceLast(char replaceThis, char withThis);
+
+
+ BString& IReplaceAll(char replaceThis, char withThis, int32 fromOffset = 0);
+
+
+ BString& IReplace(char replaceThis, char withThis, int32 maxReplaceCount, int32 fromOffset = 0);
+
+
+ BString& IReplaceFirst(const char *replaceThis, const char *withThis);
+
+
+ BString& IReplaceLast(const char *replaceThis, const char *withThis);
+
+
+ BString& IReplaceAll(const char *replaceThis, const char *withThis, int32 fromOffset = 0);
+
+
+ BString& IReplace(const char *replaceThis, const char *withThis, int32 maxReplaceCount, int32 fromOffset = 0);
+
+
+ BString& ReplaceSet(const char *setOfChars, char with);
+
+
+ BString& ReplaceSet(const char *setOfChars, const char *with);
+
+
+ char operator[](int32 index) const;
+
+
+ char& operator[](int32 index);
+
+
+ char ByteAt(int32 index) const;
+
+
+ char* LockBuffer(int32 maxLength);
+
+
+ BString& UnlockBuffer(int32 length = -1);
+
+
+ BString& ToLower();
+
+
+ BString& ToUpper();
+
+
+ BString& Capitalize();
+
+
+ BString& CapitalizeEachWord();
+
+
+ BString& CharacterEscape(const char* original, const char* setOfCharsToEscape, char escapeWith);
+
+
+ BString& CharacterEscape(const char *setOfCharsToEscape, char escapeWith);
+
+
+ BString& CharacterDeescape(const char *original, char escapeChar);
+
+
+ BString& CharacterDeescape(char escapeChar);
+
+
+ BString& operator<<(const char *);
+
+
+ BString& operator<<(const BString &);
+
+
+ BString& operator<<(char);
+
+
+ BString& operator<<(int);
+
+
+ BString& operator<<(unsigned int);
+
+
+ BString& operator<<(uint32);
+
+
+ BString& operator<<(int32);
+
+
+ BString& operator<<(uint64);
+
+
+ BString& operator<<(int64);
+
+
+ BString& operator<<(float);
+
+
+
+
+ BBlockCache(size_t cache_size, size_t block_size, uint32 type);
+
+
+ virtual ~BBlockCache();
+
+
+ void* Get(size_t block_size);
+
+
+ void Save(void *pointer, size_t block_size);
+
+
+
+
+ BStopWatch(const char *name, bool silent = false);
+
+
+ virtual ~BStopWatch();
+
+
+ void Suspend();
+
+
+ void Resume();
+
+
+ bigtime_t Lap();
+
+
+ bigtime_t ElapsedTime() const;
+
+
+ void Reset();
+
+
+ const char* Name() const;
+
+
+
+
+
+
+ BAutolock(BLocker *lock);
+
+
+ BAutolock(BLocker &lock);
+
+
+ BAutolock(BLooper *looper);
+
+
+ ~BAutolock();
+
+
+ bool IsLocked();
+
+
+
+
+ BLocker();
+
+
+ BLocker(const char *name);
+
+
+ BLocker(bool benaphore_style);
+
+
+ BLocker(const char *name, bool benaphore_style);
+
+
+ BLocker(const char *name, bool benaphore_style, bool);
+
+
+ virtual ~BLocker();
+
+
+ bool Lock(void);
+
+
+ status_t LockWithTimeout(bigtime_t timeout);
+
+
+ void Unlock(void);
+
+
+ thread_id LockingThread(void) const;
+
+
+ bool IsLocked(void) const;
+
+
+ int32 CountLocks(void) const;
+
+
+ int32 CountLockRequests(void) const;
+
+
+ sem_id Sem(void) const;
+
+
+
+
+
diff --git a/docs/develop/ikteam/schedule/applicationkit/ApplicationKitMilestones.html b/docs/develop/ikteam/schedule/applicationkit/ApplicationKitMilestones.html
new file mode 100644
index 0000000000..7f74a1d97c
--- /dev/null
+++ b/docs/develop/ikteam/schedule/applicationkit/ApplicationKitMilestones.html
@@ -0,0 +1,165 @@
+
+
+ Application Kit Milestones
+
+
+
+Application Kit Milestones
+
+
+ -
+ Interface specs completed for all classes, functions, structs
+
+
+
+
+
+
+
+ -
+ Use cases completed for all classes, functions, structs
+
+
+
+
+
+
+
+ -
+ Unit tests completed for all classes, functions, structs
+
+
+
+
+
+
+
+ -
+ Design discussions completed for all classes, functions, structs
+
+
+
+
+
+
+
+ -
+ Messaging complete
+
+
+
+
+
+ |
+
+ |
+
+ |
+
+ 19% |
+
+
+
+
+ -
+ BHandler complete
+
+
-
+ BLooper complete
+
+
-
+ Roster complete
+
+
-
+ Clipboard complete
+
+
-
+ BCursor complete
+
+
-
+ Scripting Support complete
+
+
+
+ -
+ Alpha
+
+ -
+ Beta 1
+
+ -
+ Beta 2
+
+ -
+ Release Candidate 1
+
+ -
+ 1.0!
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
+
diff --git a/docs/develop/ikteam/schedule/applicationkit/BCursor.html b/docs/develop/ikteam/schedule/applicationkit/BCursor.html
new file mode 100644
index 0000000000..c1f912e66a
--- /dev/null
+++ b/docs/develop/ikteam/schedule/applicationkit/BCursor.html
@@ -0,0 +1,305 @@
+
+
+ BCursor Tasks
+
+
+BCursor Tasks
+
+
+
+
+
+ |
+
+ |
+ Task Summary |
+ Owner |
+
+ |
+
+ |
+
+
+ BCursor
+ |
+
+
+ Gabe Yoder
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+ |
+ Task Details |
+
+
+
+
+ | BCursor Class |
+
+
+ |
+
+ |
+
+
+ BCursor(const void* cursorData);
+ |
+
+
+ |
+
+ |
+
+
+ BCursor(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BCursor();
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* into, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* data);
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+ | Legend |
+
+
+
+
+
+  |
+ Functional Spec |
+
+
+  |
+ Use Cases |
+
+
+  |
+ Unit Tests |
+
+
+  |
+ Technical Spec |
+
+
+  |
+ Implementation |
+
+
+  |
+ Completed |
+
+
+ |
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
diff --git a/docs/develop/ikteam/schedule/applicationkit/BHandler.html b/docs/develop/ikteam/schedule/applicationkit/BHandler.html
new file mode 100644
index 0000000000..49798e06ab
--- /dev/null
+++ b/docs/develop/ikteam/schedule/applicationkit/BHandler.html
@@ -0,0 +1,930 @@
+
+
+ BHandler Tasks
+
+
+BHandler Tasks
+
+
+
+
+
+ |
+
+ |
+ Task Summary |
+ Owner |
+
+ |
+
+ |
+
+
+ BHandler
+ |
+
+
+ Erik Jaesler
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+ |
+ Task Details |
+
+
+
+
+ | BHandler Class |
+
+
+ |
+
+ |
+
+
+ BHandler(const char* name = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ BHandler(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BHandler();
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage* message);
+ |
+
+
+ |
+
+ |
+
+
+ BLooper* Looper() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetName(const char* name);
+ |
+
+
+ |
+
+ |
+
+
+ const char* Name() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetNextHandler(BHandler* handler);
+ |
+
+
+ |
+
+ |
+
+
+ BHandler* NextHandler() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AddFilter(BMessageFilter* filter);
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool RemoveFilter(BMessageFilter* filter);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetFilterList(BList* filters);
+ |
+
+
+ |
+
+ |
+
+
+ BList* FilterList();
+ |
+
+
+ |
+
+ |
+
+
+ bool LockLooper();
+ |
+
+
+ |
+
+ |
+
+
+ status_t LockLooperWithTimeout(bigtime_t timeout);
+ |
+
+
+ |
+
+ |
+
+
+ void UnlockLooper();
+ |
+
+
+ |
+
+ |
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ status_t StartWatching(BMessenger, uint32 what);
+ |
+
+
+ |
+
+ |
+
+
+ status_t StartWatchingAll(BMessenger);
+ |
+
+
+ |
+
+ |
+
+
+ status_t StopWatching(BMessenger, uint32 what);
+ |
+
+
+ |
+
+ |
+
+
+ status_t StopWatchingAll(BMessenger);
+ |
+
+
+ |
+
+ |
+
+
+ status_t StartWatching(BHandler* , uint32 what);
+ |
+
+
+ |
+
+ |
+
+
+ status_t StartWatchingAll(BHandler* );
+ |
+
+
+ |
+
+ |
+
+
+ status_t StopWatching(BHandler* , uint32 what);
+ |
+
+
+ |
+
+ |
+
+
+ status_t StopWatchingAll(BHandler* );
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SendNotices(uint32 what, const BMessage* = 0);
+ |
+
+
+ |
+
+ |
+
+
+ bool IsWatched() const;
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+ | Legend |
+
+
+
+
+
+  |
+ Functional Spec |
+
+
+  |
+ Use Cases |
+
+
+  |
+ Unit Tests |
+
+
+  |
+ Technical Spec |
+
+
+  |
+ Implementation |
+
+
+  |
+ Completed |
+
+
+ |
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
diff --git a/docs/develop/ikteam/schedule/applicationkit/BLooper.html b/docs/develop/ikteam/schedule/applicationkit/BLooper.html
new file mode 100644
index 0000000000..f8628d935f
--- /dev/null
+++ b/docs/develop/ikteam/schedule/applicationkit/BLooper.html
@@ -0,0 +1,1280 @@
+
+
+ BLooper Tasks
+
+
+BLooper Tasks
+
+
+
+
+
+ |
+
+ |
+ Task Summary |
+ Owner |
+
+ |
+
+ |
+
+
+ BLooper
+ |
+
+
+ Erik Jaesler
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+ |
+ Task Details |
+
+
+
+
+ | BLooper Class |
+
+
+ |
+
+ |
+
+
+ BLooper(const char* name = NULL, int32 priority = B_NORMAL_PRIORITY, int32 port_capacity = B_LOOPER_PORT_DEFAULT_CAPACITY);
+ |
+
+
+ |
+
+ |
+
+
+ BLooper(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BLooper();
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t PostMessage(uint32 command);
+ |
+
+
+ |
+
+ |
+
+
+ status_t PostMessage(BMessage* message);
+ |
+
+
+ |
+
+ |
+
+
+ status_t PostMessage(uint32 command, BHandler* handler, BHandler* reply_to = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ status_t PostMessage(BMessage* message, BHandler* handler, BHandler* reply_to = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DispatchMessage(BMessage* message, BHandler* handler);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ BMessage* CurrentMessage() const;
+ |
+
+
+ |
+
+ |
+
+
+ BMessage* DetachCurrentMessage();
+ |
+
+
+ |
+
+ |
+
+
+ BMessageQueue* MessageQueue() const;
+ |
+
+
+ |
+
+ |
+
+
+ bool IsMessageWaiting() const;
+ |
+
+
+ |
+
+ |
+
+
+ void AddHandler(BHandler* handler);
+ |
+
+
+ |
+
+ |
+
+
+ bool RemoveHandler(BHandler* handler);
+ |
+
+
+ |
+
+ |
+
+
+ int32 CountHandlers() const;
+ |
+
+
+ |
+
+ |
+
+
+ BHandler* HandlerAt(int32 index) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 IndexOf(BHandler* handler) const;
+ |
+
+
+ |
+
+ |
+
+
+ BHandler* PreferredHandler() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetPreferredHandler(BHandler* handler);
+ |
+
+
+ |
+
+ |
+
+
+ virtual thread_id Run();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Quit();
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool QuitRequested();
+ |
+
+
+ |
+
+ |
+
+
+ bool Lock();
+ |
+
+
+ |
+
+ |
+
+
+ void Unlock();
+ |
+
+
+ |
+
+ |
+
+
+ bool IsLocked() const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t LockWithTimeout(bigtime_t timeout);
+ |
+
+
+ |
+
+ |
+
+
+ thread_id Thread() const;
+ |
+
+
+ |
+
+ |
+
+
+ team_id Team() const;
+ |
+
+
+ |
+
+ |
+
+
+ static BLooper* LooperForThread(thread_id tid);
+ |
+
+
+ |
+
+ |
+
+
+ thread_id LockingThread() const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 CountLocks() const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 CountLockRequests() const;
+ |
+
+
+ |
+
+ |
+
+
+ sem_id Sem() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AddCommonFilter(BMessageFilter* filter);
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool RemoveCommonFilter(BMessageFilter* filter);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetCommonFilterList(BList* filters);
+ |
+
+
+ |
+
+ |
+
+
+ BList* CommonFilterList() const;
+ |
+
+
+ |
+
+ |
+
+
+ BMessage* MessageFromPort(bigtime_t = B_INFINITE_TIMEOUT);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void task_looper();
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+ | Legend |
+
+
+
+
+
+  |
+ Functional Spec |
+
+
+  |
+ Use Cases |
+
+
+  |
+ Unit Tests |
+
+
+  |
+ Technical Spec |
+
+
+  |
+ Implementation |
+
+
+  |
+ Completed |
+
+
+ |
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
diff --git a/docs/develop/ikteam/schedule/applicationkit/Clipboard.html b/docs/develop/ikteam/schedule/applicationkit/Clipboard.html
new file mode 100644
index 0000000000..17743bea2e
--- /dev/null
+++ b/docs/develop/ikteam/schedule/applicationkit/Clipboard.html
@@ -0,0 +1,555 @@
+
+
+ Clipboard Tasks
+
+
+Clipboard Tasks
+
+
+
+
+
+ |
+
+ |
+ Task Summary |
+ Owner |
+
+ |
+
+ |
+
+
+ BClipboard
+ |
+
+
+ Gabe Yoder
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+ |
+ Task Details |
+
+
+
+
+ | BClipboard Class |
+
+
+ |
+
+ |
+
+
+ BClipboard(const char* name, bool transient = false);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BClipboard();
+ |
+
+
+ |
+
+ |
+
+
+ const char* Name() const;
+ |
+
+
+ |
+
+ |
+
+
+ uint32 LocalCount() const;
+ |
+
+
+ |
+
+ |
+
+
+ uint32 SystemCount() const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t StartWatching(BMessenger target);
+ |
+
+
+ |
+
+ |
+
+
+ status_t StopWatching(BMessenger target);
+ |
+
+
+ |
+
+ |
+
+
+ bool Lock();
+ |
+
+
+ |
+
+ |
+
+
+ void Unlock();
+ |
+
+
+ |
+
+ |
+
+
+ bool IsLocked() const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t Clear();
+ |
+
+
+ |
+
+ |
+
+
+ status_t Commit();
+ |
+
+
+ |
+
+ |
+
+
+ status_t Revert();
+ |
+
+
+ |
+
+ |
+
+
+ BMessenger DataSource() const;
+ |
+
+
+ |
+
+ |
+
+
+ BMessage* Data() const;
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+ | Legend |
+
+
+
+
+
+  |
+ Functional Spec |
+
+
+  |
+ Use Cases |
+
+
+  |
+ Unit Tests |
+
+
+  |
+ Technical Spec |
+
+
+  |
+ Implementation |
+
+
+  |
+ Completed |
+
+
+ |
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
diff --git a/docs/develop/ikteam/schedule/applicationkit/Messaging.html b/docs/develop/ikteam/schedule/applicationkit/Messaging.html
new file mode 100644
index 0000000000..e36b49de9c
--- /dev/null
+++ b/docs/develop/ikteam/schedule/applicationkit/Messaging.html
@@ -0,0 +1,6153 @@
+
+
+ Messaging Tasks
+
+
+Messaging Tasks
+
+
+
+
+
+ |
+
+ |
+ Task Summary |
+ Owner |
+
+ |
+
+ |
+
+
+ BInvoker
+ |
+
+
+
+ |
+
+
+ |
+
+ |
+
+
+ BMessage
+ |
+
+
+ William Bull
+ |
+
+
+ |
+
+ |
+
+
+ BMessageFilter
+ |
+
+
+ Erik Jaesler
+ |
+
+
+ |
+
+ |
+
+
+ BMessageQueue
+ |
+
+
+ Jeremy Rand
+ |
+
+
+ |
+
+ |
+
+
+ BMessageRunner
+ |
+
+
+
+ |
+
+
+ |
+
+ |
+
+
+ BMessenger
+ |
+
+
+
+ |
+
+
+ |
+
+ |
+
+
+ BMessenger Support
+ |
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+ |
+ Task Details |
+
+
+
+
+ | BInvoker Class |
+
+
+ |
+
+ |
+
+
+ BInvoker();
+ |
+
+
+ |
+
+ |
+
+
+ BInvoker(BMessage* message, const BHandler* handler, const BLooper* looper = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ BInvoker(BMessage* message, BMessenger target);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BInvoker();
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t SetMessage(BMessage* message);
+ |
+
+
+ |
+
+ |
+
+
+ BMessage* Message() const;
+ |
+
+
+ |
+
+ |
+
+
+ uint32 Command() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t SetTarget(const BHandler* h, const BLooper* loop = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t SetTarget(BMessenger messenger);
+ |
+
+
+ |
+
+ |
+
+
+ bool IsTargetLocal() const;
+ |
+
+
+ |
+
+ |
+
+
+ BHandler* Target(BLooper** looper = NULL) const;
+ |
+
+
+ |
+
+ |
+
+
+ BMessenger Messenger() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t SetHandlerForReply(BHandler* handler);
+ |
+
+
+ |
+
+ |
+
+
+ BHandler* HandlerForReply() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Invoke(BMessage* msg = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ status_t InvokeNotify(BMessage* msg, uint32 kind = B_CONTROL_INVOKED);
+ |
+
+
+ |
+
+ |
+
+
+ status_t SetTimeout(bigtime_t timeout);
+ |
+
+
+ |
+
+ |
+
+
+ bigtime_t Timeout() const;
+ |
+
+
+ |
+
+ |
+
+
+ uint32 InvokeKind(bool* notify = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ void BeginInvokeNotify(uint32 kind = B_CONTROL_INVOKED);
+ |
+
+
+ |
+
+ |
+
+
+ void EndInvokeNotify();
+ |
+
+
+
+ | BMessage Class |
+
+
+ |
+
+ |
+
+
+ BMessage();
+ |
+
+
+ |
+
+ |
+
+
+ BMessage(uint32 what);
+ |
+
+
+ |
+
+ |
+
+
+ BMessage(const BMessage& a_message);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BMessage();
+ |
+
+
+ |
+
+ |
+
+
+ BMessage& operator=(const BMessage& msg);
+ |
+
+
+ |
+
+ |
+
+
+ status_t GetInfo(type_code typeRequested, int32 which, char** name, type_code* typeReturned, int32* count = NULL) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t GetInfo(const char* name, type_code* type, int32* c = 0) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t GetInfo(const char* name, type_code* type, bool* fixed_size) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 CountNames(type_code type) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool IsEmpty() const;
+ |
+
+
+ |
+
+ |
+
+
+ bool IsSystem() const;
+ |
+
+
+ |
+
+ |
+
+
+ bool IsReply() const;
+ |
+
+
+ |
+
+ |
+
+
+ void PrintToStream() const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t Rename(const char* old_entry, const char* new_entry);
+ |
+
+
+ |
+
+ |
+
+
+ bool WasDelivered() const;
+ |
+
+
+ |
+
+ |
+
+
+ bool IsSourceWaiting() const;
+ |
+
+
+ |
+
+ |
+
+
+ bool IsSourceRemote() const;
+ |
+
+
+ |
+
+ |
+
+
+ BMessenger ReturnAddress() const;
+ |
+
+
+ |
+
+ |
+
+
+ const BMessage* Previous() const;
+ |
+
+
+ |
+
+ |
+
+
+ bool WasDropped() const;
+ |
+
+
+ |
+
+ |
+
+
+ BPoint DropPoint(BPoint* offset = NULL) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t SendReply(uint32 command, BHandler* reply_to = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ status_t SendReply(BMessage* the_reply, BHandler* reply_to = NULL, bigtime_t timeout = B_INFINITE_TIMEOUT);
+ |
+
+
+ |
+
+ |
+
+
+ status_t SendReply(BMessage* the_reply, BMessenger reply_to, bigtime_t timeout = B_INFINITE_TIMEOUT);
+ |
+
+
+ |
+
+ |
+
+
+ status_t SendReply(uint32 command, BMessage* reply_to_reply);
+ |
+
+
+ |
+
+ |
+
+
+ status_t SendReply(BMessage* the_reply, BMessage* reply_to_reply, bigtime_t send_timeout = B_INFINITE_TIMEOUT, bigtime_t reply_timeout = B_INFINITE_TIMEOUT);
+ |
+
+
+ |
+
+ |
+
+
+ ssize_t FlattenedSize() const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t Flatten(char* buffer, ssize_t size) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t Flatten(BDataIO* stream, ssize_t* size = NULL) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t Unflatten(const char* flat_buffer);
+ |
+
+
+ |
+
+ |
+
+
+ status_t Unflatten(BDataIO* stream);
+ |
+
+
+ |
+
+ |
+
+
+ status_t AddSpecifier(const char* property);
+ |
+
+
+ |
+
+ |
+
+
+ status_t AddSpecifier(const char* property, int32 index);
+ |
+
+
+ |
+
+ |
+
+
+ status_t AddSpecifier(const char* property, int32 index, int32 range);
+ |
+
+
+ |
+
+ |
+
+
+ status_t AddSpecifier(const char* property, const char* name);
+ |
+
+
+ |
+
+ |
+
+
+ status_t AddSpecifier(const BMessage* specifier);
+ |
+
+
+ |
+
+ |
+
+
+ status_t SetCurrentSpecifier(int32 index);
+ |
+
+
+ |
+
+ |
+
+
+ status_t GetCurrentSpecifier(int32* index, BMessage* specifier = NULL, int32* form = NULL, const char** property = NULL) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool HasSpecifiers() const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t PopSpecifier();
+ |
+
+
+ |
+
+ |
+
+
+ status_t AddRect(const char* name, BRect a_rect);
+ |
+
+
+ |
+
+ |
+
+
+ status_t AddPoint(const char* name, BPoint a_point);
+ |
+
+
+ |
+
+ |
+
+
+ status_t AddString(const char* name, const char* a_string);
+ |
+
+
+ |
+
+ |
+
+
+ status_t AddString(const char* name, const BString& a_string);
+ |
+
+
+ |
+
+ |
+
+
+ status_t AddInt8(const char* name, int8 val);
+ |
+
+
+ |
+
+ |
+
+
+ status_t AddInt16(const char* name, int16 val);
+ |
+
+
+ |
+
+ |
+
+
+ status_t AddInt32(const char* name, int32 val);
+ |
+
+
+ |
+
+ |
+
+
+ status_t AddInt64(const char* name, int64 val);
+ |
+
+
+ |
+
+ |
+
+
+ status_t AddBool(const char* name, bool a_boolean);
+ |
+
+
+ |
+
+ |
+
+
+ status_t AddFloat(const char* name, float a_float);
+ |
+
+
+ |
+
+ |
+
+
+ status_t AddDouble(const char* name, double a_double);
+ |
+
+
+ |
+
+ |
+
+
+ status_t AddPointer(const char* name, const void* ptr);
+ |
+
+
+ |
+
+ |
+
+
+ status_t AddMessenger(const char* name, BMessenger messenger);
+ |
+
+
+ |
+
+ |
+
+
+ status_t AddRef(const char* name, const entry_ref* ref);
+ |
+
+
+ |
+
+ |
+
+
+ status_t AddMessage(const char* name, const BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ status_t AddFlat(const char* name, BFlattenable* obj, int32 count = 1);
+ |
+
+
+ |
+
+ |
+
+
+ status_t AddData(const char* name, type_code type, const void* data, ssize_t numBytes, bool is_fixed_size = true, int32 count = 1);
+ |
+
+
+ |
+
+ |
+
+
+ status_t RemoveData(const char* name, int32 index = 0);
+ |
+
+
+ |
+
+ |
+
+
+ status_t RemoveName(const char* name);
+ |
+
+
+ |
+
+ |
+
+
+ status_t MakeEmpty();
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindRect(const char* name, BRect* rect) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindRect(const char* name, int32 index, BRect* rect) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindPoint(const char* name, BPoint* pt) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindPoint(const char* name, int32 index, BPoint* pt) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindString(const char* name, const char** str) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindString(const char* name, int32 index, const char** str) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindString(const char* name, BString* str) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindString(const char* name, int32 index, BString* str) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindInt8(const char* name, int8* value) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindInt8(const char* name, int32 index, int8* val) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindInt16(const char* name, int16* value) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindInt16(const char* name, int32 index, int16* val) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindInt32(const char* name, int32* value) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindInt32(const char* name, int32 index, int32* val) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindInt64(const char* name, int64* value) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindInt64(const char* name, int32 index, int64* val) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindBool(const char* name, bool* value) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindBool(const char* name, int32 index, bool* value) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindFloat(const char* name, float* f) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindFloat(const char* name, int32 index, float* f) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindDouble(const char* name, double* d) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindDouble(const char* name, int32 index, double* d) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindPointer(const char* name, void** ptr) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindPointer(const char* name, int32 index, void** ptr) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindMessenger(const char* name, BMessenger* m) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindMessenger(const char* name, int32 index, BMessenger* m) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindRef(const char* name, entry_ref* ref) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindRef(const char* name, int32 index, entry_ref* ref) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindMessage(const char* name, BMessage* msg) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindMessage(const char* name, int32 index, BMessage* msg) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindFlat(const char* name, BFlattenable* obj) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindFlat(const char* name, int32 index, BFlattenable* obj) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindData(const char* name, type_code type, const void** data, ssize_t* numBytes) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindData(const char* name, type_code type, int32 index, const void** data, ssize_t* numBytes) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplaceRect(const char* name, BRect a_rect);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplaceRect(const char* name, int32 index, BRect a_rect);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplacePoint(const char* name, BPoint a_point);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplacePoint(const char* name, int32 index, BPoint a_point);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplaceString(const char* name, const char* string);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplaceString(const char* name, int32 index, const char* string);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplaceString(const char* name, const BString& string);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplaceString(const char* name, int32 index, const BString& string);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplaceInt8(const char* name, int8 val);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplaceInt8(const char* name, int32 index, int8 val);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplaceInt16(const char* name, int16 val);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplaceInt16(const char* name, int32 index, int16 val);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplaceInt32(const char* name, int32 val);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplaceInt32(const char* name, int32 index, int32 val);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplaceInt64(const char* name, int64 val);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplaceInt64(const char* name, int32 index, int64 val);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplaceBool(const char* name, bool a_bool);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplaceBool(const char* name, int32 index, bool a_bool);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplaceFloat(const char* name, float a_float);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplaceFloat(const char* name, int32 index, float a_float);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplaceDouble(const char* name, double a_double);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplaceDouble(const char* name, int32 index, double a_double);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplacePointer(const char* name, const void* ptr);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplacePointer(const char* name,int32 index,const void* ptr);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplaceMessenger(const char* name, BMessenger messenger);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplaceMessenger(const char* name, int32 index, BMessenger msngr);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplaceRef( const char* name,const entry_ref* ref);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplaceRef( const char* name, int32 index, const entry_ref* ref);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplaceMessage(const char* name, const BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplaceMessage(const char* name, int32 index, const BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplaceFlat(const char* name, BFlattenable* obj);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplaceFlat(const char* name, int32 index, BFlattenable* obj);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplaceData(const char* name, type_code type, const void* data, ssize_t data_size);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReplaceData(const char* name, type_code type, int32 index, const void* data, ssize_t data_size);
+ |
+
+
+ |
+
+ |
+
+
+ void* operator new(size_t size);
+ |
+
+
+ |
+
+ |
+
+
+ void operator delete(void* ptr, size_t size);
+ |
+
+
+ |
+
+ |
+
+
+ bool HasRect(const char* , int32 n = 0) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool HasPoint(const char* , int32 n = 0) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool HasString(const char* , int32 n = 0) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool HasInt8(const char* , int32 n = 0) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool HasInt16(const char* , int32 n = 0) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool HasInt32(const char* , int32 n = 0) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool HasInt64(const char* , int32 n = 0) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool HasBool(const char* , int32 n = 0) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool HasFloat(const char* , int32 n = 0) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool HasDouble(const char* , int32 n = 0) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool HasPointer(const char* , int32 n = 0) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool HasMessenger(const char* , int32 n = 0) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool HasRef(const char* , int32 n = 0) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool HasMessage(const char* , int32 n = 0) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool HasFlat(const char* , const BFlattenable* ) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool HasFlat(const char* ,int32 ,const BFlattenable* ) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool HasData(const char* , type_code , int32 n = 0) const;
+ |
+
+
+ |
+
+ |
+
+
+ BRect FindRect(const char* , int32 n = 0) const;
+ |
+
+
+ |
+
+ |
+
+
+ BPoint FindPoint(const char* , int32 n = 0) const;
+ |
+
+
+ |
+
+ |
+
+
+ const char* FindString(const char* , int32 n = 0) const;
+ |
+
+
+ |
+
+ |
+
+
+ int8 FindInt8(const char* , int32 n = 0) const;
+ |
+
+
+ |
+
+ |
+
+
+ int16 FindInt16(const char* , int32 n = 0) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 FindInt32(const char* , int32 n = 0) const;
+ |
+
+
+ |
+
+ |
+
+
+ int64 FindInt64(const char* , int32 n = 0) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool FindBool(const char* , int32 n = 0) const;
+ |
+
+
+ |
+
+ |
+
+
+ float FindFloat(const char* , int32 n = 0) const;
+ |
+
+
+ |
+
+ |
+
+
+ double FindDouble(const char* , int32 n = 0) const;
+ |
+
+
+ |
+
+ |
+
+
+ BMessage(BMessage* a_message);
+ |
+
+
+ |
+
+ |
+
+
+ NOTE: Add convenience functions for struct rgb_color
+ |
+
+
+
+ | BMessageFilter Class |
+
+
+ |
+
+ |
+
+
+ BMessageFilter(uint32 what, filter_hook func = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ BMessageFilter(message_delivery delivery, message_source source, filter_hook func = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ BMessageFilter(message_delivery delivery, message_source source, uint32 what, filter_hook func = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ BMessageFilter(const BMessageFilter& filter);
+ |
+
+
+ |
+
+ |
+
+
+ BMessageFilter(const BMessageFilter* filter);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BMessageFilter();
+ |
+
+
+ |
+
+ |
+
+
+ BMessageFilter& operator=(const BMessageFilter &from);
+ |
+
+
+ |
+
+ |
+
+
+ virtual filter_result Filter(BMessage* message, BHandler** target);
+ |
+
+
+ |
+
+ |
+
+
+ message_delivery MessageDelivery() const;
+ |
+
+
+ |
+
+ |
+
+
+ message_source MessageSource() const;
+ |
+
+
+ |
+
+ |
+
+
+ uint32 Command() const;
+ |
+
+
+ |
+
+ |
+
+
+ bool FiltersAnyCommand() const;
+ |
+
+
+ |
+
+ |
+
+
+ BLooper* Looper() const;
+ |
+
+
+
+ | BMessageQueue Class |
+
+
+ |
+
+ |
+
+
+ BMessageQueue();
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BMessageQueue();
+ |
+
+
+ |
+
+ |
+
+
+ void AddMessage(BMessage* an_event);
+ |
+
+
+ |
+
+ |
+
+
+ bool RemoveMessage(BMessage* an_event);
+ |
+
+
+ |
+
+ |
+
+
+ BMessage* NextMessage();
+ |
+
+
+ |
+
+ |
+
+
+ BMessage* FindMessage(int32 index) const;
+ |
+
+
+ |
+
+ |
+
+
+ BMessage* FindMessage(uint32 what, int32 index = 0) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 CountMessages() const;
+ |
+
+
+ |
+
+ |
+
+
+ bool IsEmpty() const;
+ |
+
+
+ |
+
+ |
+
+
+ bool Lock();
+ |
+
+
+ |
+
+ |
+
+
+ void Unlock();
+ |
+
+
+
+ | BMessageRunner Class |
+
+
+ |
+
+ |
+
+
+ BMessageRunner(BMessenger target, const BMessage* msg, bigtime_t interval, int32 count = -1);
+ |
+
+
+ |
+
+ |
+
+
+ BMessageRunner(BMessenger target, const BMessage* msg, bigtime_t interval, int32 count, BMessenger reply_to);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BMessageRunner();
+ |
+
+
+ |
+
+ |
+
+
+ status_t InitCheck() const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t SetInterval(bigtime_t interval);
+ |
+
+
+ |
+
+ |
+
+
+ status_t SetCount(int32 count);
+ |
+
+
+ |
+
+ |
+
+
+ status_t GetInfo(bigtime_t* interval, int32* count) const;
+ |
+
+
+
+ | BMessenger Class |
+
+
+ |
+
+ |
+
+
+ BMessenger();
+ |
+
+
+ |
+
+ |
+
+
+ BMessenger(const char* mime_sig, team_id team = -1, status_t* perr = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ BMessenger(const BHandler* handler, const BLooper* looper = NULL, status_t* perr = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ BMessenger(const BMessenger& from);
+ |
+
+
+ |
+
+ |
+
+
+ ~BMessenger();
+ |
+
+
+ |
+
+ |
+
+
+ bool IsTargetLocal() const;
+ |
+
+
+ |
+
+ |
+
+
+ BHandler* Target(BLooper** looper) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool LockTarget() const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t LockTargetWithTimeout(bigtime_t timeout) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t SendMessage(uint32 command, BHandler* reply_to = NULL) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t SendMessage(BMessage* a_message, BHandler* reply_to = NULL, bigtime_t timeout = B_INFINITE_TIMEOUT) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t SendMessage(BMessage* a_message, BMessenger reply_to, bigtime_t timeout = B_INFINITE_TIMEOUT) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t SendMessage(uint32 command, BMessage* reply) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t SendMessage(BMessage* a_message, BMessage* reply, bigtime_t send_timeout = B_INFINITE_TIMEOUT, bigtime_t reply_timeout = B_INFINITE_TIMEOUT) const;
+ |
+
+
+ |
+
+ |
+
+
+ BMessenger& operator=(const BMessenger &from);
+ |
+
+
+ |
+
+ |
+
+
+ bool operator==(const BMessenger &other) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool IsValid() const;
+ |
+
+
+ |
+
+ |
+
+
+ team_id Team() const;
+ |
+
+
+
+ | BMessenger Support Functions |
+
+
+ |
+
+ |
+
+
+ bool operator<(const BMessenger & a, const BMessenger & b);
+ |
+
+
+ |
+
+ |
+
+
+ bool operator!=(const BMessenger & a, const BMessenger & b);
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+ | Legend |
+
+
+
+
+
+  |
+ Functional Spec |
+
+
+  |
+ Use Cases |
+
+
+  |
+ Unit Tests |
+
+
+  |
+ Technical Spec |
+
+
+  |
+ Implementation |
+
+
+  |
+ Completed |
+
+
+ |
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
diff --git a/docs/develop/ikteam/schedule/applicationkit/Roster.html b/docs/develop/ikteam/schedule/applicationkit/Roster.html
new file mode 100644
index 0000000000..eeeec8c2d2
--- /dev/null
+++ b/docs/develop/ikteam/schedule/applicationkit/Roster.html
@@ -0,0 +1,955 @@
+
+
+ Roster Tasks
+
+
+Roster Tasks
+
+
+
+
+
+ |
+
+ |
+ Task Summary |
+ Owner |
+
+ |
+
+ |
+
+
+ BRoster
+ |
+
+
+ Joe Banafato
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+ |
+ Task Details |
+
+
+
+
+ | BRoster Class |
+
+
+ |
+
+ |
+
+
+ BRoster();
+ |
+
+
+ |
+
+ |
+
+
+ ~BRoster();
+ |
+
+
+ |
+
+ |
+
+
+ bool IsRunning(const char* mime_sig) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool IsRunning(entry_ref* ref) const;
+ |
+
+
+ |
+
+ |
+
+
+ team_id TeamFor(const char* mime_sig) const;
+ |
+
+
+ |
+
+ |
+
+
+ team_id TeamFor(entry_ref* ref) const;
+ |
+
+
+ |
+
+ |
+
+
+ void GetAppList(BList* team_id_list) const;
+ |
+
+
+ |
+
+ |
+
+
+ void GetAppList(const char* sig, BList* team_id_list) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t GetAppInfo(const char* sig, app_info* info) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t GetAppInfo(entry_ref* ref, app_info* info) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t GetRunningAppInfo(team_id team, app_info* info) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t GetActiveAppInfo(app_info* info) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindApp(const char* mime_type, entry_ref* app) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t FindApp(entry_ref* ref, entry_ref* app) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t Broadcast(BMessage* msg) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t Broadcast(BMessage* msg, BMessenger reply_to) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t StartWatching(BMessenger target, uint32 event_mask = B_REQUEST_LAUNCHED | B_REQUEST_QUIT) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t StopWatching(BMessenger target) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t ActivateApp(team_id team) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t Launch(const char* mime_type, BMessage* initial_msgs = NULL, team_id* app_team = NULL) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t Launch(const char* mime_type, BList* message_list, team_id* app_team = NULL) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t Launch(const char* mime_type, int argc, char** args, team_id* app_team = NULL) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t Launch(const entry_ref* ref, const BMessage* initial_message = NULL, team_id* app_team = NULL) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t Launch(const entry_ref* ref, const BList* message_list, team_id* app_team = NULL) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t Launch(const entry_ref* ref, int argc, const char* const* args, team_id* app_team = NULL) const;
+ |
+
+
+ |
+
+ |
+
+
+ void GetRecentDocuments(BMessage* refList, int32 maxCount, const char* ofType = NULL, const char* openedByAppSig = NULL) const;
+ |
+
+
+ |
+
+ |
+
+
+ void GetRecentDocuments(BMessage* refList, int32 maxCount, const char* ofTypeList[], int32 ofTypeListCount, const char* openedByAppSig = NULL) const;
+ |
+
+
+ |
+
+ |
+
+
+ void GetRecentFolders(BMessage* refList, int32 maxCount, const char* openedByAppSig = NULL) const;
+ |
+
+
+ |
+
+ |
+
+
+ void GetRecentApps(BMessage* refList, int32 maxCount) const;
+ |
+
+
+ |
+
+ |
+
+
+ void AddToRecentDocuments(const entry_ref* doc, const char* appSig = NULL) const;
+ |
+
+
+ |
+
+ |
+
+
+ void AddToRecentFolders(const entry_ref* folder,const char* appSig = NULL) const;
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+ | Legend |
+
+
+
+
+
+  |
+ Functional Spec |
+
+
+  |
+ Use Cases |
+
+
+  |
+ Unit Tests |
+
+
+  |
+ Technical Spec |
+
+
+  |
+ Implementation |
+
+
+  |
+ Completed |
+
+
+ |
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
diff --git a/docs/develop/ikteam/schedule/applicationkit/ScriptingSupport.html b/docs/develop/ikteam/schedule/applicationkit/ScriptingSupport.html
new file mode 100644
index 0000000000..e67d0fa404
--- /dev/null
+++ b/docs/develop/ikteam/schedule/applicationkit/ScriptingSupport.html
@@ -0,0 +1,580 @@
+
+
+ Scripting Support Tasks
+
+
+Scripting Support Tasks
+
+
+
+
+
+ |
+
+ |
+ Task Summary |
+ Owner |
+
+ |
+
+ |
+
+
+ BPropertyInfo
+ |
+
+
+ Jeremy Rand
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+ |
+ Task Details |
+
+
+
+
+ | BPropertyInfo Class |
+
+
+ |
+
+ |
+
+
+ BPropertyInfo(property_info* p = NULL, value_info* ci = NULL, bool free_on_delete = false);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BPropertyInfo();
+ |
+
+
+ |
+
+ |
+
+
+ virtual int32 FindMatch(BMessage* msg, int32 index, BMessage* spec, int32 form, const char* prop, void* data = NULL) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool IsFixedSize() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual type_code TypeCode() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual ssize_t FlattenedSize() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Flatten(void* buffer, ssize_t size) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool AllowsTypeCode(type_code code) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Unflatten(type_code c, const void* buf, ssize_t s);
+ |
+
+
+ |
+
+ |
+
+
+ const property_info* Properties() const;
+ |
+
+
+ |
+
+ |
+
+
+ const value_info* Values() const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 CountProperties() const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 CountValues() const;
+ |
+
+
+ |
+
+ |
+
+
+ void PrintToStream() const;
+ |
+
+
+ |
+
+ |
+
+
+ static bool FindCommand(uint32, int32, property_info* );
+ |
+
+
+ |
+
+ |
+
+
+ static bool FindSpecifier(uint32, property_info* );
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+ | Legend |
+
+
+
+
+
+  |
+ Functional Spec |
+
+
+  |
+ Use Cases |
+
+
+  |
+ Unit Tests |
+
+
+  |
+ Technical Spec |
+
+
+  |
+ Implementation |
+
+
+  |
+ Completed |
+
+
+ |
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
diff --git a/docs/develop/ikteam/schedule/assignments.html b/docs/develop/ikteam/schedule/assignments.html
new file mode 100644
index 0000000000..047746b224
--- /dev/null
+++ b/docs/develop/ikteam/schedule/assignments.html
@@ -0,0 +1,789 @@
+
+
+ Interface Kit Team Assignments
+
+
+
+ Interface Kit Team Assignments and Open Tasks
+
+
+
+
+ Assignments:
+
+
+
+
+ |
+ Erik Jaesler
+ |
+
+
+ |
+ |
+
+ BMessageFilter
+ |
+
+
+ |
+ |
+
+ BHandler
+ |
+
+
+ |
+ |
+
+ BLooper
+ |
+
+
+ |
+ |
+
+ BAlert
+ |
+
+
+ |
+ |
+
+ BArchivable
+ |
+
+
+ |
+ |
+
+ BArchivable
+ |
+
+
+ |
+ |
+
+ BApplication
+ |
+
+
+ |
+
+
+ |
+ Gabe Yoder
+ |
+
+
+ |
+ |
+
+ BClipboard
+ |
+
+
+ |
+ |
+
+ BCursor
+ |
+
+
+ |
+
+
+ |
+ Graham Gilmore
+ |
+
+
+ |
+ |
+
+ BBlockCache
+ |
+
+
+ |
+
+
+ |
+ Graham Macdonald
+ |
+
+
+ |
+ |
+
+ BPictureButton
+ |
+
+
+ |
+
+
+ |
+ Greg Gelfond
+ |
+
+
+ |
+ |
+
+ BPoint
+ |
+
+
+ |
+ |
+
+ BShape
+ |
+
+
+ |
+ |
+
+ BStringItem
+ |
+
+
+ |
+
+
+ |
+ Issac Yonemoto
+ |
+
+
+ |
+ |
+
+ BRect
+ |
+
+
+ |
+ |
+
+ BRegion
+ |
+
+
+ |
+ |
+
+ BList
+ |
+
+
+ |
+
+
+ |
+ Jeremy Rand
+ |
+
+
+ |
+ |
+
+ BMessageQueue
+ |
+
+
+ |
+ |
+
+ BPropertyInfo
+ |
+
+
+ |
+ |
+
+ BDeskbar
+ |
+
+
+ |
+ |
+
+ BAutoLock
+ |
+
+
+ |
+ |
+
+ BLocker
+ |
+
+
+ |
+
+
+ |
+ Joe Banafato
+ |
+
+
+ |
+ |
+
+ BRoster
+ |
+
+
+ |
+
+
+ |
+ Justin Gasper
+ |
+
+
+ |
+ |
+
+ BMenu
+ |
+
+
+ |
+ |
+
+ BMenuBar
+ |
+
+
+ |
+ |
+
+ BMenuItem
+ |
+
+
+ |
+
+
+ |
+ Marc Flerackers
+ |
+
+
+ |
+ |
+
+ BControl
+ |
+
+
+ |
+ |
+
+ BButton
+ |
+
+
+ |
+ |
+
+ BCheckBox
+ |
+
+
+ |
+ |
+
+ BRadioButton
+ |
+
+
+ |
+ |
+
+ BTab
+ |
+
+
+ |
+ |
+
+ BTabView
+ |
+
+
+ |
+ |
+
+ BBox
+ |
+
+
+ |
+ |
+
+ BStatusBar
+ |
+
+
+ |
+
+
+ |
+ Staffan Hellstrom
+ |
+
+
+ |
+ |
+
+ BPolygon
+ |
+
+
+ |
+ |
+
+ BSlider
+ |
+
+
+ |
+
+
+ |
+ Steve Vallee
+ |
+
+
+ |
+ |
+
+ BDataIO
+ |
+
+
+ |
+ |
+
+ BMallocIO
+ |
+
+
+ |
+ |
+
+ BMemoryIO
+ |
+
+
+ |
+ |
+
+ BPositionIO
+ |
+
+
+ |
+ |
+
+ Misc
+ |
+
+
+ |
+ |
+
+ BString Utility
+ |
+
+
+ |
+ |
+
+ BString
+ |
+
+
+ |
+ |
+
+ BStopWatch
+ |
+
+
+ |
+
+
+ |
+ Ulrich Wimboeck
+ |
+
+
+ |
+ |
+
+ BListItem
+ |
+
+
+ |
+ |
+
+ BListView
+ |
+
+
+ |
+ |
+
+ BOutlineListView
+ |
+
+
+ |
+
+
+ |
+ William Bull
+ |
+
+
+ |
+ |
+
+ BMessage
+ |
+
+
+ |
+
+
+ |
+ Xavier Castellan
+ |
+
+
+ |
+ |
+
+ BBitmap
+ |
+
+
+ |
+
+
+
+
+
+
+ Open Tasks:
+
+
+
+
+ |
+ Application Kit
+ |
+
+
+ |
+ |
+
+ BInvoker
+ |
+
+
+ |
+ |
+
+ BMessageRunner
+ |
+
+
+ |
+ |
+
+ BMessenger
+ |
+
+
+ |
+ |
+
+ BMessenger Support
+ |
+
+
+ |
+
+
+ |
+ Integration
+ |
+
+
+ |
+ |
+
+ BWindow
+ |
+
+
+ |
+ |
+
+ BView
+ |
+
+
+ |
+
+
+ |
+ Interface Kit
+ |
+
+
+ |
+ |
+
+ BPicture
+ |
+
+
+ |
+ |
+
+ BScreen
+ |
+
+
+ |
+ |
+
+ BShapeIterator
+ |
+
+
+ |
+ |
+
+ Screen Support
+ |
+
+
+ |
+ |
+
+ BFont
+ |
+
+
+ |
+ |
+
+ Font Support
+ |
+
+
+ |
+ |
+
+ BColorControl
+ |
+
+
+ |
+ |
+
+ BStringView
+ |
+
+
+ |
+ |
+
+ BScrollBar
+ |
+
+
+ |
+ |
+
+ BScrollView
+ |
+
+
+ |
+ |
+
+ Scrollbar Config
+ |
+
+
+ |
+ |
+
+ BSeparatorItem
+ |
+
+
+ |
+ |
+
+ BMenuField
+ |
+
+
+ |
+ |
+
+ BPopUpMenu
+ |
+
+
+ |
+ |
+
+ Menu Config
+ |
+
+
+ |
+ |
+
+ BTextView
+ |
+
+
+ |
+ |
+
+ BTextControl
+ |
+
+
+ |
+ |
+
+ unicode_block
+ |
+
+
+ |
+ |
+
+ Deskbar Support
+ |
+
+
+ |
+ |
+
+ Mouse Config
+ |
+
+
+ |
+ |
+
+ Workspace Support
+ |
+
+
+ |
+ |
+
+ Keyboard Config
+ |
+
+
+ |
+ |
+
+ UI Color Info
+ |
+
+
+ |
+ |
+
+ Miscellaneous
+ |
+
+
+ |
+ |
+
+ BDragger
+ |
+
+
+ |
+ |
+
+ BShelf
+ |
+
+
+ |
+ |
+
+ BChannelControl
+ |
+
+
+ |
+ |
+
+ BChannelSlider
+ |
+
+
+ |
+ |
+
+ BMultiChannelControl
+ |
+
+
+ |
+ |
+
+ BOptionControl
+ |
+
+
+ |
+ |
+
+ BOptionPopUp
+ |
+
+
+ |
+
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
\ No newline at end of file
diff --git a/docs/develop/ikteam/schedule/index.html b/docs/develop/ikteam/schedule/index.html
new file mode 100644
index 0000000000..c822e0810a
--- /dev/null
+++ b/docs/develop/ikteam/schedule/index.html
@@ -0,0 +1,147 @@
+
+
+ Interface Kit Team Schedule
+
+
+Interface Kit Team Schedule
+
+Here is the schedule for the Interface Kit Team. To help organize our work,
+tasks have been broken into 4 general areas:
+
+
+Organizationally, it's best to consider these as separate projects within the
+scope of the IK Team's charter. As such, core contributors should pick a
+project and stick with it -- it will make things a lot easier to keep track of,
+and losing track of stuff would be a bad thing. =)
+
+DarkWyrm is the technical lead for the app_server; he has done an enormous amount
+of research and he is currently in the best position to lead the effort.
+
+Erik Jakowatz will continue in his capacity as overall project lead, as well as
+being directly involved in Integration as technical lead.
+
+A word of warning: this schedule is downright huge because of the sheer number of
+items to be completed. There is a paper available in which the rationale behind the
+schedule is discussed.
+
+
+Current Status
+Here are some fuzzy indicators of what progress the team has made base on the number of
+outstanding tasks completed. No warranty is made concerning the accuracy of these
+graphs. =)
+
+
+
+
+
+
+ | Overall |
+
+
+
+
+
+
+
+
+
Application Kit |
+
+
+
+
+
+
+
+
Interface Kit |
+
+
+
+
+
+
+
+
Integration |
+
+
+
+
+
+
+
+
Support Kit |
+
+
+
+
+
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
\ No newline at end of file
diff --git a/docs/develop/ikteam/schedule/integration/BApplication.html b/docs/develop/ikteam/schedule/integration/BApplication.html
new file mode 100644
index 0000000000..7ed1d7bf05
--- /dev/null
+++ b/docs/develop/ikteam/schedule/integration/BApplication.html
@@ -0,0 +1,1030 @@
+
+
+ BApplication Tasks
+
+
+BApplication Tasks
+
+
+
+
+
+ |
+
+ |
+ Task Summary |
+ Owner |
+
+ |
+
+ |
+
+
+ BApplication
+ |
+
+
+ Erik Jaesler
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+ |
+ Task Details |
+
+
+
+
+ | BApplication Class |
+
+
+ |
+
+ |
+
+
+ BApplication(const char* signature);
+ |
+
+
+ |
+
+ |
+
+
+ BApplication(const char* signature, status_t* error);
+ |
+
+
+ |
+
+ |
+
+
+ BApplication(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BApplication();
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t InitCheck() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual thread_id Run();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Quit();
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool QuitRequested();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Pulse();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ReadyToRun();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ArgvReceived(int32 argc, char** argv);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AppActivated(bool active);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void RefsReceived(BMessage* a_message);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AboutRequested();
+ |
+
+
+ |
+
+ |
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+ |
+
+
+ |
+
+ |
+
+
+ void ShowCursor();
+ |
+
+
+ |
+
+ |
+
+
+ void HideCursor();
+ |
+
+
+ |
+
+ |
+
+
+ void ObscureCursor();
+ |
+
+
+ |
+
+ |
+
+
+ bool IsCursorHidden() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetCursor(const void* cursor);
+ |
+
+
+ |
+
+ |
+
+
+ void SetCursor(const BCursor* cursor, bool sync=true);
+ |
+
+
+ |
+
+ |
+
+
+ int32 CountWindows() const;
+ |
+
+
+ |
+
+ |
+
+
+ BWindow* WindowAt(int32 index) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 CountLoopers() const;
+ |
+
+
+ |
+
+ |
+
+
+ BLooper* LooperAt(int32 index) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool IsLaunching() const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t GetAppInfo(app_info* info) const;
+ |
+
+
+ |
+
+ |
+
+
+ static BResources* AppResources();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DispatchMessage(BMessage* an_event, BHandler* handler);
+ |
+
+
+ |
+
+ |
+
+
+ void SetPulseRate(bigtime_t rate);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+ | Legend |
+
+
+
+
+
+  |
+ Functional Spec |
+
+
+  |
+ Use Cases |
+
+
+  |
+ Unit Tests |
+
+
+  |
+ Technical Spec |
+
+
+  |
+ Implementation |
+
+
+  |
+ Completed |
+
+
+ |
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
diff --git a/docs/develop/ikteam/schedule/integration/BArchivable.html b/docs/develop/ikteam/schedule/integration/BArchivable.html
new file mode 100644
index 0000000000..3dd64e1dc8
--- /dev/null
+++ b/docs/develop/ikteam/schedule/integration/BArchivable.html
@@ -0,0 +1,513 @@
+
+
+ BArchivable Tasks
+
+
+BArchivable Tasks
+
+
+
+
+
+ |
+
+ |
+ Task Summary |
+ Owner |
+
+ |
+
+ |
+
+
+ BArchivable
+ |
+
+
+ Erik Jaesler
+ |
+
+
+ |
+
+ |
+
+
+ BArchivable
+ |
+
+
+ Erik Jaesler
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+ |
+ Task Details |
+
+
+
+
+ | BArchivable Class |
+
+
+ |
+
+ |
+
+
+ BArchivable();
+ |
+
+
+ |
+
+ |
+
+
+ BArchivable(BMessage* from);
+ |
+
+
+ |
+
+ |
+
+
+ ~BArchivable();
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* into, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* from);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Perform(perform_code d, void* arg); ???
+ |
+
+
+
+ | BArchivable Functions |
+
+
+ |
+
+ |
+
+
+ BArchivable* instantiate_object(BMessage* from, image_id* id);
+ |
+
+
+ |
+
+ |
+
+
+ BArchivable* instantiate_object(BMessage* from);
+ |
+
+
+ |
+
+ |
+
+
+ bool validate_instantiation(BMessage* from, const char* class_name);
+ |
+
+
+ |
+
+ |
+
+
+ instantiation_func find_instantiation_func(const char* class_name, const char* sig);
+ |
+
+
+ |
+
+ |
+
+
+ instantiation_func find_instantiation_func(const char* class_name);
+ |
+
+
+ |
+
+ |
+
+
+ instantiation_func find_instantiation_func(BMessage* archive_data);
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+ | Legend |
+
+
+
+
+
+  |
+ Functional Spec |
+
+
+  |
+ Use Cases |
+
+
+  |
+ Unit Tests |
+
+
+  |
+ Technical Spec |
+
+
+  |
+ Implementation |
+
+
+  |
+ Completed |
+
+
+ |
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
diff --git a/docs/develop/ikteam/schedule/integration/BView.html b/docs/develop/ikteam/schedule/integration/BView.html
new file mode 100644
index 0000000000..996c008b86
--- /dev/null
+++ b/docs/develop/ikteam/schedule/integration/BView.html
@@ -0,0 +1,5105 @@
+
+
+ BView Tasks
+
+
+BView Tasks
+
+
+
+
+
+ |
+
+ |
+ Task Summary |
+ Owner |
+
+ |
+
+ |
+
+
+ BView
+ |
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+ |
+ Task Details |
+
+
+
+
+ | BView Class |
+
+
+ |
+
+ |
+
+
+ BView(BRect frame, const char* name, uint32 resizeMask, uint32 flags);
+ |
+
+
+ |
+
+ |
+
+
+ BView(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BView();
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AttachedToWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllAttached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DetachedFromWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllDetached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ void AddChild(BView* child, BView* before = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ bool RemoveChild(BView* child);
+ |
+
+
+ |
+
+ |
+
+
+ int32 CountChildren() const;
+ |
+
+
+ |
+
+ |
+
+
+ BView* ChildAt(int32 index) const;
+ |
+
+
+ |
+
+ |
+
+
+ BView* NextSibling() const;
+ |
+
+
+ |
+
+ |
+
+
+ BView* PreviousSibling() const;
+ |
+
+
+ |
+
+ |
+
+
+ bool RemoveSelf();
+ |
+
+
+ |
+
+ |
+
+
+ BWindow* Window() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Draw(BRect updateRect);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseDown(BPoint where);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseUp(BPoint where);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseMoved(BPoint where, uint32 code, const BMessage* a_message);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void WindowActivated(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void KeyDown(const char* bytes, int32 numBytes);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void KeyUp(const char* bytes, int32 numBytes);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Pulse();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameMoved(BPoint new_position);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameResized(float new_width, float new_height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void TargetedByScrollView(BScrollView* scroll_view);
+ |
+
+
+ |
+
+ |
+
+
+ void BeginRectTracking(BRect startRect, uint32 style = B_TRACK_WHOLE_RECT);
+ |
+
+
+ |
+
+ |
+
+
+ void EndRectTracking();
+ |
+
+
+ |
+
+ |
+
+
+ void GetMouse(BPoint* location, uint32* buttons, bool checkMessageQueue = true);
+ |
+
+
+ |
+
+ |
+
+
+ void DragMessage(BMessage* aMessage, BRect dragRect, BHandler* reply_to = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ void DragMessage(BMessage* aMessage, BBitmap* anImage, BPoint offset, BHandler* reply_to = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ void DragMessage(BMessage* aMessage, BBitmap* anImage, drawing_mode dragMode, BPoint offset, BHandler* reply_to = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ BView* FindView(const char* name) const;
+ |
+
+
+ |
+
+ |
+
+
+ BView* Parent() const;
+ |
+
+
+ |
+
+ |
+
+
+ BRect Bounds() const;
+ |
+
+
+ |
+
+ |
+
+
+ BRect Frame() const;
+ |
+
+
+ |
+
+ |
+
+
+ void ConvertToScreen(BPoint* pt) const;
+ |
+
+
+ |
+
+ |
+
+
+ BPoint ConvertToScreen(BPoint pt) const;
+ |
+
+
+ |
+
+ |
+
+
+ void ConvertFromScreen(BPoint* pt) const;
+ |
+
+
+ |
+
+ |
+
+
+ BPoint ConvertFromScreen(BPoint pt) const;
+ |
+
+
+ |
+
+ |
+
+
+ void ConvertToScreen(BRect* r) const;
+ |
+
+
+ |
+
+ |
+
+
+ BRect ConvertToScreen(BRect r) const;
+ |
+
+
+ |
+
+ |
+
+
+ void ConvertFromScreen(BRect* r) const;
+ |
+
+
+ |
+
+ |
+
+
+ BRect ConvertFromScreen(BRect r) const;
+ |
+
+
+ |
+
+ |
+
+
+ void ConvertToParent(BPoint* pt) const;
+ |
+
+
+ |
+
+ |
+
+
+ BPoint ConvertToParent(BPoint pt) const;
+ |
+
+
+ |
+
+ |
+
+
+ void ConvertFromParent(BPoint* pt) const;
+ |
+
+
+ |
+
+ |
+
+
+ BPoint ConvertFromParent(BPoint pt) const;
+ |
+
+
+ |
+
+ |
+
+
+ void ConvertToParent(BRect* r) const;
+ |
+
+
+ |
+
+ |
+
+
+ BRect ConvertToParent(BRect r) const;
+ |
+
+
+ |
+
+ |
+
+
+ void ConvertFromParent(BRect* r) const;
+ |
+
+
+ |
+
+ |
+
+
+ BRect ConvertFromParent(BRect r) const;
+ |
+
+
+ |
+
+ |
+
+
+ BPoint LeftTop() const;
+ |
+
+
+ |
+
+ |
+
+
+ void GetClippingRegion(BRegion* region) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ConstrainClippingRegion(BRegion* region);
+ |
+
+
+ |
+
+ |
+
+
+ void ClipToPicture(BPicture* picture, BPoint where = B_ORIGIN, bool sync = true);
+ |
+
+
+ |
+
+ |
+
+
+ void ClipToInversePicture(BPicture* picture, BPoint where = B_ORIGIN, bool sync = true);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetDrawingMode(drawing_mode mode);
+ |
+
+
+ |
+
+ |
+
+
+ drawing_mode DrawingMode() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetBlendingMode(source_alpha srcAlpha, alpha_function alphaFunc);
+ |
+
+
+ |
+
+ |
+
+
+ void GetBlendingMode(source_alpha* srcAlpha, alpha_function* alphaFunc) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetPenSize(float size);
+ |
+
+
+ |
+
+ |
+
+
+ float PenSize() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetViewCursor(const BCursor* cursor, bool sync=true);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetViewColor(rgb_color c);
+ |
+
+
+ |
+
+ |
+
+
+ void SetViewColor(uchar r, uchar g, uchar b, uchar a = 255);
+ |
+
+
+ |
+
+ |
+
+
+ rgb_color ViewColor() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetViewBitmap(const BBitmap* bitmap, BRect srcRect, BRect dstRect, uint32 followFlags=B_FOLLOW_TOP|B_FOLLOW_LEFT, uint32 options = B_TILE_BITMAP);
+ |
+
+
+ |
+
+ |
+
+
+ void SetViewBitmap(const BBitmap* bitmap, uint32 followFlags = B_FOLLOW_TOP|B_FOLLOW_LEFT, uint32 options = B_TILE_BITMAP);
+ |
+
+
+ |
+
+ |
+
+
+ void ClearViewBitmap();
+ |
+
+
+ |
+
+ |
+
+
+ status_t SetViewOverlay(const BBitmap* overlay, BRect srcRect, BRect dstRect, rgb_color* colorKey, uint32 followFlags = B_FOLLOW_TOP|B_FOLLOW_LEFT, uint32 options = 0);
+ |
+
+
+ |
+
+ |
+
+
+ status_t SetViewOverlay(const BBitmap* overlay, rgb_color* colorKey, uint32 followFlags = B_FOLLOW_TOP|B_FOLLOW_LEFT, uint32 options = 0);
+ |
+
+
+ |
+
+ |
+
+
+ void ClearViewOverlay();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetHighColor(rgb_color a_color);
+ |
+
+
+ |
+
+ |
+
+
+ void SetHighColor(uchar r, uchar g, uchar b, uchar a = 255);
+ |
+
+
+ |
+
+ |
+
+
+ rgb_color HighColor() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetLowColor(rgb_color a_color);
+ |
+
+
+ |
+
+ |
+
+
+ void SetLowColor(uchar r, uchar g, uchar b, uchar a = 255);
+ |
+
+
+ |
+
+ |
+
+
+ rgb_color LowColor() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetLineMode(cap_mode lineCap, join_mode lineJoin, float miterLimit = B_DEFAULT_MITER_LIMIT);
+ |
+
+
+ |
+
+ |
+
+
+ join_mode LineJoinMode() const;
+ |
+
+
+ |
+
+ |
+
+
+ cap_mode LineCapMode() const;
+ |
+
+
+ |
+
+ |
+
+
+ float LineMiterLimit() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetOrigin(BPoint pt);
+ |
+
+
+ |
+
+ |
+
+
+ void SetOrigin(float x, float y);
+ |
+
+
+ |
+
+ |
+
+
+ BPoint Origin() const;
+ |
+
+
+ |
+
+ |
+
+
+ void PushState();
+ |
+
+
+ |
+
+ |
+
+
+ void PopState();
+ |
+
+
+ |
+
+ |
+
+
+ void MovePenTo(BPoint pt);
+ |
+
+
+ |
+
+ |
+
+
+ void MovePenTo(float x, float y);
+ |
+
+
+ |
+
+ |
+
+
+ void MovePenBy(float x, float y);
+ |
+
+
+ |
+
+ |
+
+
+ BPoint PenLocation() const;
+ |
+
+
+ |
+
+ |
+
+
+ void StrokeLine(BPoint toPt, pattern p = B_SOLID_HIGH);
+ |
+
+
+ |
+
+ |
+
+
+ void StrokeLine(BPoint pt0, BPoint pt1, pattern p = B_SOLID_HIGH);
+ |
+
+
+ |
+
+ |
+
+
+ void BeginLineArray(int32 count);
+ |
+
+
+ |
+
+ |
+
+
+ void AddLine(BPoint pt0, BPoint pt1, rgb_color col);
+ |
+
+
+ |
+
+ |
+
+
+ void EndLineArray();
+ |
+
+
+ |
+
+ |
+
+
+ void StrokePolygon(const BPolygon* aPolygon, bool closed = true, pattern p = B_SOLID_HIGH);
+ |
+
+
+ |
+
+ |
+
+
+ void StrokePolygon(const BPoint* ptArray, int32 numPts, bool closed = true, pattern p = B_SOLID_HIGH);
+ |
+
+
+ |
+
+ |
+
+
+ void StrokePolygon(const BPoint* ptArray, int32 numPts, BRect bounds, bool closed = true, pattern p = B_SOLID_HIGH);
+ |
+
+
+ |
+
+ |
+
+
+ void FillPolygon(const BPolygon* aPolygon, pattern p = B_SOLID_HIGH);
+ |
+
+
+ |
+
+ |
+
+
+ void FillPolygon(const BPoint* ptArray, int32 numPts, pattern p = B_SOLID_HIGH);
+ |
+
+
+ |
+
+ |
+
+
+ void FillPolygon(const BPoint* ptArray, int32 numPts, BRect bounds, pattern p = B_SOLID_HIGH);
+ |
+
+
+ |
+
+ |
+
+
+ void StrokeTriangle(BPoint pt1, BPoint pt2, BPoint pt3, BRect bounds, pattern p = B_SOLID_HIGH);
+ |
+
+
+ |
+
+ |
+
+
+ void StrokeTriangle(BPoint pt1, BPoint pt2, BPoint pt3, pattern p = B_SOLID_HIGH);
+ |
+
+
+ |
+
+ |
+
+
+ void FillTriangle(BPoint pt1, BPoint pt2, BPoint pt3, pattern p = B_SOLID_HIGH);
+ |
+
+
+ |
+
+ |
+
+
+ void FillTriangle(BPoint pt1, BPoint pt2, BPoint pt3, BRect bounds,pattern p = B_SOLID_HIGH);
+ |
+
+
+ |
+
+ |
+
+
+ void StrokeRect(BRect r, pattern p = B_SOLID_HIGH);
+ |
+
+
+ |
+
+ |
+
+
+ void FillRect(BRect r, pattern p = B_SOLID_HIGH);
+ |
+
+
+ |
+
+ |
+
+
+ void FillRegion(BRegion* a_region, pattern p= B_SOLID_HIGH);
+ |
+
+
+ |
+
+ |
+
+
+ void InvertRect(BRect r);
+ |
+
+
+ |
+
+ |
+
+
+ void StrokeRoundRect(BRect r, float xRadius, float yRadius, pattern p = B_SOLID_HIGH);
+ |
+
+
+ |
+
+ |
+
+
+ void FillRoundRect(BRect r, float xRadius, float yRadius, pattern p = B_SOLID_HIGH);
+ |
+
+
+ |
+
+ |
+
+
+ void StrokeEllipse(BPoint center, float xRadius, float yRadius, pattern p = B_SOLID_HIGH);
+ |
+
+
+ |
+
+ |
+
+
+ void StrokeEllipse(BRect r, pattern p = B_SOLID_HIGH);
+ |
+
+
+ |
+
+ |
+
+
+ void FillEllipse(BPoint center, float xRadius, float yRadius, pattern p = B_SOLID_HIGH);
+ |
+
+
+ |
+
+ |
+
+
+ void FillEllipse(BRect r, pattern p = B_SOLID_HIGH);
+ |
+
+
+ |
+
+ |
+
+
+ void StrokeArc(BPoint center, float xRadius, float yRadius, float start_angle, float arc_angle, pattern p = B_SOLID_HIGH);
+ |
+
+
+ |
+
+ |
+
+
+ void StrokeArc(BRect r, float start_angle, float arc_angle, pattern p = B_SOLID_HIGH);
+ |
+
+
+ |
+
+ |
+
+
+ void FillArc(BPoint center, float xRadius, float yRadius, float start_angle, float arc_angle, pattern p = B_SOLID_HIGH);
+ |
+
+
+ |
+
+ |
+
+
+ void FillArc(BRect r, float start_angle, float arc_angle, pattern p = B_SOLID_HIGH);
+ |
+
+
+ |
+
+ |
+
+
+ void StrokeBezier(BPoint* controlPoints, pattern p = B_SOLID_HIGH);
+ |
+
+
+ |
+
+ |
+
+
+ void FillBezier( BPoint* controlPoints, pattern p = B_SOLID_HIGH);
+ |
+
+
+ |
+
+ |
+
+
+ void StrokeShape(BShape* shape, pattern p = B_SOLID_HIGH);
+ |
+
+
+ |
+
+ |
+
+
+ void FillShape(BShape* shape, pattern p = B_SOLID_HIGH);
+ |
+
+
+ |
+
+ |
+
+
+ void CopyBits(BRect src, BRect dst);
+ |
+
+
+ |
+
+ |
+
+
+ void DrawBitmapAsync(const BBitmap* aBitmap, BRect srcRect, BRect dstRect);
+ |
+
+
+ |
+
+ |
+
+
+ void DrawBitmapAsync(const BBitmap* aBitmap);
+ |
+
+
+ |
+
+ |
+
+
+ void DrawBitmapAsync(const BBitmap* aBitmap, BPoint where);
+ |
+
+
+ |
+
+ |
+
+
+ void DrawBitmapAsync(const BBitmap* aBitmap, BRect dstRect);
+ |
+
+
+ |
+
+ |
+
+
+ void DrawBitmap(const BBitmap* aBitmap, BRect srcRect, BRect dstRect);
+ |
+
+
+ |
+
+ |
+
+
+ void DrawBitmap(const BBitmap* aBitmap);
+ |
+
+
+ |
+
+ |
+
+
+ void DrawBitmap(const BBitmap* aBitmap, BPoint where);
+ |
+
+
+ |
+
+ |
+
+
+ void DrawBitmap(const BBitmap* aBitmap, BRect dstRect);
+ |
+
+
+ |
+
+ |
+
+
+ void DrawChar(char aChar);
+ |
+
+
+ |
+
+ |
+
+
+ void DrawChar(char aChar, BPoint location);
+ |
+
+
+ |
+
+ |
+
+
+ void DrawString(const char* aString, escapement_delta* delta = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ void DrawString(const char* aString, BPoint location, escapement_delta* delta = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ void DrawString(const char* aString, int32 length, escapement_delta* delta = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ void DrawString(const char* aString, int32 length, BPoint location, escapement_delta* delta = 0L);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetFont(const BFont* font, uint32 mask = B_FONT_ALL);
+ |
+
+
+ |
+
+ |
+
+
+ void GetFont(BFont* font) const;
+ |
+
+
+ |
+
+ |
+
+
+ void TruncateString(BString* in_out, uint32 mode, float width) const;
+ |
+
+
+ |
+
+ |
+
+
+ float StringWidth(const char* string) const;
+ |
+
+
+ |
+
+ |
+
+
+ float StringWidth(const char* string, int32 length) const;
+ |
+
+
+ |
+
+ |
+
+
+ void GetStringWidths(char* stringArray[], int32 lengthArray[], int32 numStrings, float widthArray[]) const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetFontSize(float size);
+ |
+
+
+ |
+
+ |
+
+
+ void ForceFontAliasing(bool enable);
+ |
+
+
+ |
+
+ |
+
+
+ void GetFontHeight(font_height* height) const;
+ |
+
+
+ |
+
+ |
+
+
+ void Invalidate(BRect invalRect);
+ |
+
+
+ |
+
+ |
+
+
+ void Invalidate(const BRegion* invalRegion);
+ |
+
+
+ |
+
+ |
+
+
+ void Invalidate();
+ |
+
+
+ |
+
+ |
+
+
+ void SetDiskMode(char* filename, long offset);
+ |
+
+
+ |
+
+ |
+
+
+ void BeginPicture(BPicture* a_picture);
+ |
+
+
+ |
+
+ |
+
+
+ void AppendToPicture(BPicture* a_picture);
+ |
+
+
+ |
+
+ |
+
+
+ BPicture* EndPicture();
+ |
+
+
+ |
+
+ |
+
+
+ void DrawPicture(const BPicture* a_picture);
+ |
+
+
+ |
+
+ |
+
+
+ void DrawPicture(const BPicture* a_picture, BPoint where);
+ |
+
+
+ |
+
+ |
+
+
+ void DrawPicture(const char* filename, long offset, BPoint where);
+ |
+
+
+ |
+
+ |
+
+
+ void DrawPictureAsync(const BPicture* a_picture);
+ |
+
+
+ |
+
+ |
+
+
+ void DrawPictureAsync(const BPicture* a_picture, BPoint where);
+ |
+
+
+ |
+
+ |
+
+
+ void DrawPictureAsync(const char* filename, long offset, BPoint where);
+ |
+
+
+ |
+
+ |
+
+
+ status_t SetEventMask(uint32 mask, uint32 options=0);
+ |
+
+
+ |
+
+ |
+
+
+ uint32 EventMask();
+ |
+
+
+ |
+
+ |
+
+
+ status_t SetMouseEventMask(uint32 mask, uint32 options=0);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetFlags(uint32 flags);
+ |
+
+
+ |
+
+ |
+
+
+ uint32 Flags() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetResizingMode(uint32 mode);
+ |
+
+
+ |
+
+ |
+
+
+ uint32 ResizingMode() const;
+ |
+
+
+ |
+
+ |
+
+
+ void MoveBy(float dh, float dv);
+ |
+
+
+ |
+
+ |
+
+
+ void MoveTo(BPoint where);
+ |
+
+
+ |
+
+ |
+
+
+ void MoveTo(float x, float y);
+ |
+
+
+ |
+
+ |
+
+
+ void ResizeBy(float dh, float dv);
+ |
+
+
+ |
+
+ |
+
+
+ void ResizeTo(float width, float height);
+ |
+
+
+ |
+
+ |
+
+
+ void ScrollBy(float dh, float dv);
+ |
+
+
+ |
+
+ |
+
+
+ void ScrollTo(float x, float y);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ScrollTo(BPoint where);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MakeFocus(bool focusState = true);
+ |
+
+
+ |
+
+ |
+
+
+ bool IsFocus() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Show();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Hide();
+ |
+
+
+ |
+
+ |
+
+
+ bool IsHidden() const;
+ |
+
+
+ |
+
+ |
+
+
+ bool IsHidden(const BView* looking_from) const;
+ |
+
+
+ |
+
+ |
+
+
+ void Flush() const;
+ |
+
+
+ |
+
+ |
+
+
+ void Sync() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ResizeToPreferred();
+ |
+
+
+ |
+
+ |
+
+
+ BScrollBar* ScrollBar(orientation posture) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ bool IsPrinting() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetScale(float scale) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Perform(perform_code d, void* arg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DrawAfterChildren(BRect r);
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+ | Legend |
+
+
+
+
+
+  |
+ Functional Spec |
+
+
+  |
+ Use Cases |
+
+
+  |
+ Unit Tests |
+
+
+  |
+ Technical Spec |
+
+
+  |
+ Implementation |
+
+
+  |
+ Completed |
+
+
+ |
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
diff --git a/docs/develop/ikteam/schedule/integration/BWindow.html b/docs/develop/ikteam/schedule/integration/BWindow.html
new file mode 100644
index 0000000000..70147aef75
--- /dev/null
+++ b/docs/develop/ikteam/schedule/integration/BWindow.html
@@ -0,0 +1,2580 @@
+
+
+ BWindow Tasks
+
+
+BWindow Tasks
+
+
+
+
+
+ |
+
+ |
+ Task Summary |
+ Owner |
+
+ |
+
+ |
+
+
+ BWindow
+ |
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+ |
+ Task Details |
+
+
+
+
+ | BWindow Class |
+
+
+ |
+
+ |
+
+
+ BWindow(BRect frame, const char* title, window_type type, uint32 flags, uint32 workspace = B_CURRENT_WORKSPACE);
+ |
+
+
+ |
+
+ |
+
+
+ BWindow(BRect frame, const char* title, window_look look, window_feel feel, uint32 flags, uint32 workspace = B_CURRENT_WORKSPACE);
+ |
+
+
+ |
+
+ |
+
+
+ BWindow(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BWindow();
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Quit();
+ |
+
+
+ |
+
+ |
+
+
+ void Close();
+ |
+
+
+ |
+
+ |
+
+
+ void AddChild(BView* child, BView* before = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ bool RemoveChild(BView* child);
+ |
+
+
+ |
+
+ |
+
+
+ int32 CountChildren() const;
+ |
+
+
+ |
+
+ |
+
+
+ BView* ChildAt(int32 index) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DispatchMessage(BMessage* message, BHandler* handler);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage* message);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameMoved(BPoint new_position);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void WorkspacesChanged(uint32 old_ws, uint32 new_ws);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void WorkspaceActivated(int32 ws, bool state);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameResized(float new_width, float new_height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Minimize(bool minimize);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Zoom(BPoint rec_position, float rec_width, float rec_height);
+ |
+
+
+ |
+
+ |
+
+
+ void Zoom();
+ |
+
+
+ |
+
+ |
+
+
+ void SetZoomLimits(float max_h, float max_v);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ScreenChanged(BRect screen_size, color_space depth);
+ |
+
+
+ |
+
+ |
+
+
+ void SetPulseRate(bigtime_t rate);
+ |
+
+
+ |
+
+ |
+
+
+ bigtime_t PulseRate() const;
+ |
+
+
+ |
+
+ |
+
+
+ void AddShortcut(uint32 key, uint32 modifiers, BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ void AddShortcut(uint32 key, uint32 modifiers, BMessage* msg, BHandler* target);
+ |
+
+
+ |
+
+ |
+
+
+ void RemoveShortcut(uint32 key, uint32 modifiers);
+ |
+
+
+ |
+
+ |
+
+
+ void SetDefaultButton(BButton* button);
+ |
+
+
+ |
+
+ |
+
+
+ BButton* DefaultButton() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MenusBeginning();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MenusEnded();
+ |
+
+
+ |
+
+ |
+
+
+ bool NeedsUpdate() const;
+ |
+
+
+ |
+
+ |
+
+
+ void UpdateIfNeeded();
+ |
+
+
+ |
+
+ |
+
+
+ BView* FindView(const char* view_name) const;
+ |
+
+
+ |
+
+ |
+
+
+ BView* FindView(BPoint) const;
+ |
+
+
+ |
+
+ |
+
+
+ BView* CurrentFocus() const;
+ |
+
+
+ |
+
+ |
+
+
+ void Activate(bool = true);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void WindowActivated(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ void ConvertToScreen(BPoint* pt) const;
+ |
+
+
+ |
+
+ |
+
+
+ BPoint ConvertToScreen(BPoint pt) const;
+ |
+
+
+ |
+
+ |
+
+
+ void ConvertFromScreen(BPoint* pt) const;
+ |
+
+
+ |
+
+ |
+
+
+ BPoint ConvertFromScreen(BPoint pt) const;
+ |
+
+
+ |
+
+ |
+
+
+ void ConvertToScreen(BRect* rect) const;
+ |
+
+
+ |
+
+ |
+
+
+ BRect ConvertToScreen(BRect rect) const;
+ |
+
+
+ |
+
+ |
+
+
+ void ConvertFromScreen(BRect* rect) const;
+ |
+
+
+ |
+
+ |
+
+
+ BRect ConvertFromScreen(BRect rect) const;
+ |
+
+
+ |
+
+ |
+
+
+ void MoveBy(float dx, float dy);
+ |
+
+
+ |
+
+ |
+
+
+ void MoveTo(BPoint);
+ |
+
+
+ |
+
+ |
+
+
+ void MoveTo(float x, float y);
+ |
+
+
+ |
+
+ |
+
+
+ void ResizeBy(float dx, float dy);
+ |
+
+
+ |
+
+ |
+
+
+ void ResizeTo(float width, float height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Show();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Hide();
+ |
+
+
+ |
+
+ |
+
+
+ bool IsHidden() const;
+ |
+
+
+ |
+
+ |
+
+
+ bool IsMinimized() const;
+ |
+
+
+ |
+
+ |
+
+
+ void Flush() const;
+ |
+
+
+ |
+
+ |
+
+
+ void Sync() const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t SendBehind(const BWindow* window);
+ |
+
+
+ |
+
+ |
+
+
+ void DisableUpdates();
+ |
+
+
+ |
+
+ |
+
+
+ void EnableUpdates();
+ |
+
+
+ |
+
+ |
+
+
+ void BeginViewTransaction();
+ |
+
+
+ |
+
+ |
+
+
+ void EndViewTransaction();
+ |
+
+
+ |
+
+ |
+
+
+ BRect Bounds() const;
+ |
+
+
+ |
+
+ |
+
+
+ BRect Frame() const;
+ |
+
+
+ |
+
+ |
+
+
+ const char* Title() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetTitle(const char* title);
+ |
+
+
+ |
+
+ |
+
+
+ bool IsFront() const;
+ |
+
+
+ |
+
+ |
+
+
+ bool IsActive() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetKeyMenuBar(BMenuBar* bar);
+ |
+
+
+ |
+
+ |
+
+
+ BMenuBar* KeyMenuBar() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetSizeLimits(float min_h, float max_h, float min_v, float max_v);
+ |
+
+
+ |
+
+ |
+
+
+ void GetSizeLimits(float* min_h, float* max_h, float* min_v, float* max_v);
+ |
+
+
+ |
+
+ |
+
+
+ uint32 Workspaces() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetWorkspaces(uint32);
+ |
+
+
+ |
+
+ |
+
+
+ BView* LastMouseMovedView() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ status_t AddToSubset(BWindow* window);
+ |
+
+
+ |
+
+ |
+
+
+ status_t RemoveFromSubset(BWindow* window);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Perform(perform_code d, void* arg);
+ |
+
+
+ |
+
+ |
+
+
+ status_t SetType(window_type type);
+ |
+
+
+ |
+
+ |
+
+
+ window_type Type() const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t SetLook(window_look look);
+ |
+
+
+ |
+
+ |
+
+
+ window_look Look() const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t SetFeel(window_feel feel);
+ |
+
+
+ |
+
+ |
+
+
+ window_feel Feel() const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t SetFlags(uint32);
+ |
+
+
+ |
+
+ |
+
+
+ uint32 Flags() const;
+ |
+
+
+ |
+
+ |
+
+
+ bool IsModal() const;
+ |
+
+
+ |
+
+ |
+
+
+ bool IsFloating() const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t SetWindowAlignment(window_alignment mode, int32 h, int32 hOffset = 0, int32 width = 0, int32 widthOffset = 0, int32 v = 0, int32 vOffset = 0, int32 height = 0, int32 heightOffset = 0);
+ |
+
+
+ |
+
+ |
+
+
+ status_t GetWindowAlignment(window_alignment* mode = NULL, int32* h = NULL, int32* hOffset = NULL, int32* width = NULL, int32* widthOffset = NULL, int32* v = NULL, int32* vOffset = NULL, int32* height = NULL, int32* heightOffset = NULL) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool QuitRequested();
+ |
+
+
+ |
+
+ |
+
+
+ virtual thread_id Run();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void task_looper();
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+ | Legend |
+
+
+
+
+
+  |
+ Functional Spec |
+
+
+  |
+ Use Cases |
+
+
+  |
+ Unit Tests |
+
+
+  |
+ Technical Spec |
+
+
+  |
+ Implementation |
+
+
+  |
+ Completed |
+
+
+ |
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
diff --git a/docs/develop/ikteam/schedule/integration/IntegrationMilestones.html b/docs/develop/ikteam/schedule/integration/IntegrationMilestones.html
new file mode 100644
index 0000000000..2c8b328a85
--- /dev/null
+++ b/docs/develop/ikteam/schedule/integration/IntegrationMilestones.html
@@ -0,0 +1,156 @@
+
+
+ Integration Milestones
+
+
+
+Integration Milestones
+
+
+ -
+ Interface specs completed for all classes, functions, structs
+
+
+
+
+
+ |
+
+ |
+
+ |
+
+ 25% |
+
+
+
+
+
+
+ -
+ Use cases completed for all classes, functions, structs
+
+
+
+
+
+ |
+
+ |
+
+ |
+
+ 25% |
+
+
+
+
+
+
+ -
+ Unit tests completed for all classes, functions, structs
+
+
+
+
+
+ |
+
+ |
+
+ |
+
+ 25% |
+
+
+
+
+
+
+ -
+ Design discussions completed for all classes, functions, structs
+
+
+
+
+
+ |
+
+ |
+
+ |
+
+ 25% |
+
+
+
+
+
+
+ -
+ BArchivable complete
+
+
+
+
+
+ |
+
+ |
+
+ |
+
+ 100% |
+
+
+
+
+ -
+ BApplication complete
+
+
-
+ BWindow complete
+
+
-
+ BView complete
+
+
+
+ -
+ Alpha
+
+ -
+ Beta 1
+
+ -
+ Beta 2
+
+ -
+ Release Candidate 1
+
+ -
+ 1.0!
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
+
diff --git a/docs/develop/ikteam/schedule/interfacekit/AdvancedControlWidgets.html b/docs/develop/ikteam/schedule/interfacekit/AdvancedControlWidgets.html
new file mode 100644
index 0000000000..d81e07b947
--- /dev/null
+++ b/docs/develop/ikteam/schedule/interfacekit/AdvancedControlWidgets.html
@@ -0,0 +1,3887 @@
+
+
+ Advanced Control Widgets Tasks
+
+
+Advanced Control Widgets Tasks
+
+
+
+
+
+ |
+
+ |
+ Task Summary |
+ Owner |
+
+ |
+
+ |
+
+
+ BChannelControl
+ |
+
+
+
+ |
+
+
+ |
+
+ |
+
+
+ BChannelSlider
+ |
+
+
+
+ |
+
+
+ |
+
+ |
+
+
+ BMultiChannelControl
+ |
+
+
+
+ |
+
+
+ |
+
+ |
+
+
+ BOptionControl
+ |
+
+
+
+ |
+
+
+ |
+
+ |
+
+
+ BOptionPopUp
+ |
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+ |
+ Task Details |
+
+
+
+
+ | BChannelControl Class |
+
+
+ |
+
+ |
+
+
+ BChannelControl(BRect frame, const char * name, const char * label, BMessage * model, int32 channel_count = 1, uint32 resize = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW);
+ |
+
+
+ |
+
+ |
+
+
+ BChannelControl(BMessage* from);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BChannelControl();
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* into, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Draw(BRect area) = 0;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseDown(BPoint where) = 0;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void KeyDown(const char* bytes, int32 size) = 0;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameResized(float width, float height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetFont(const BFont* font, uint32 mask = B_FONT_ALL);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AttachedToWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DetachedFromWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ResizeToPreferred();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void GetPreferredSize(float* width, float* height) = 0;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage* message);
+ |
+
+
+ |
+
+ |
+
+
+ virtual BHandler *ResolveSpecifier(BMessage *msg, int32 index, BMessage *specifier, int32 form, const char *property);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t GetSupportedSuites(BMessage *data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetModificationMessage(BMessage *message);
+ |
+
+
+ |
+
+ |
+
+
+ BMessage *ModificationMessage() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Invoke(BMessage *msg = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t InvokeChannel(BMessage *msg = NULL, int32 from_channel = 0, int32 channel_count = -1, const bool* in_mask = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ status_t InvokeNotifyChannel(BMessage *msg = NULL, uint32 kind = B_CONTROL_INVOKED, int32 from_channel = 0, int32 channel_count = -1, const bool* in_mask = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ virtual voidSetValue(int32 value);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t SetCurrentChannel(int32 channel);
+ |
+
+
+ |
+
+ |
+
+
+ int32 CurrentChannel() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual int32 CountChannels() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual int32 MaxChannelCount() const = 0;
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t SetChannelCount(int32 channel_count);
+ |
+
+
+ |
+
+ |
+
+
+ int32 ValueFor(int32 channel) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual int32 GetValue(int32* out_values, int32 from_channel, int32 channel_count) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t SetValueFor(int32 channel, int32 value);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t SetValue(int32 from_channel, int32 channel_count, const int32* in_values);
+ |
+
+
+ |
+
+ |
+
+
+ status_t SetAllValue(int32 values);
+ |
+
+
+ |
+
+ |
+
+
+ status_t SetLimitsFor(int32 channel, int32 minimum, int32 maximum);
+ |
+
+
+ |
+
+ |
+
+
+ status_t GetLimitsFor(int32 channel, int32* minimum, int32* maximum) const ;
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t SetLimitsFor(int32 from_channel, int32 channel_count, const int32* minimum, const int32* maximum);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t GetLimitsFor(int32 from_channel, int32 channel_count, int32* minimum, int32* maximum) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t SetLimits(int32 minimum, int32 maximum);
+ |
+
+
+ |
+
+ |
+
+
+ status_t GetLimits(int32* outMinimum, int32* outMaximum) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool SupportsIndividualLimits() const = 0;
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t SetLimitLabels(const char* min_label, const char* max_label);
+ |
+
+
+ |
+
+ |
+
+
+ const char* MinLimitLabel() const;
+ |
+
+
+ |
+
+ |
+
+
+ const char* MaxLimitLabel() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t SetLimitLabelsFor(int32 channel, const char* minLabel, const char* maxLabel);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t SetLimitLabelsFor(int32 from_channel, int32 channel_count, const char* minLabel, const char* maxLabel);
+ |
+
+
+ |
+
+ |
+
+
+ const char* MinLimitLabelFor(int32 channel) const;
+ |
+
+
+ |
+
+ |
+
+
+ const char* MaxLimitLabelFor(int32 channel) const;
+ |
+
+
+
+ | BChannelSlider Class |
+
+
+ |
+
+ |
+
+
+ BChannelSlider(BRect area, const char* name, const char* label, BMessage* model, int32 channels = 1, uint32 resize = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW);
+ |
+
+
+ |
+
+ |
+
+
+ BChannelSlider(BRect area, const char* name, const char* label, BMessage* model, orientation o, int32 channels = 1, uint32 resize = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW);
+ |
+
+
+ |
+
+ |
+
+
+ BChannelSlider(BMessage* from);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BChannelSlider();
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* from);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* into, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual orientation Orientation() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetOrientation(orientation o);
+ |
+
+
+ |
+
+ |
+
+
+ virtual int32 MaxChannelCount() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool SupportsIndividualLimits() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AttachedToWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllAttached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DetachedFromWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllDetached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Draw(BRect area);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseDown(BPoint where);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseUp(BPoint pt);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* message);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void WindowActivated(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void KeyDown(const char* bytes, int32 numBytes);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void KeyUp(const char* bytes, int32 numBytes);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameResized(float width, float height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetFont(const BFont* font, uint32 mask = B_FONT_ALL);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MakeFocus(bool focusState = true);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetEnabled(bool on);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DrawChannel(BView* into, int32 channel, BRect area, bool pressed);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DrawGroove(BView* into, int32 channel, BPoint tl, BPoint br);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DrawThumb(BView* into, int32 channel, BPoint where, bool pressed );
+ |
+
+
+ |
+
+ |
+
+
+ virtual const BBitmap* ThumbFor(int32 channel, bool pressed);
+ |
+
+
+ |
+
+ |
+
+
+ virtual BRect ThumbFrameFor(int32 channel);
+ |
+
+
+ |
+
+ |
+
+
+ virtual float ThumbDeltaFor(int32 channel);
+ |
+
+
+ |
+
+ |
+
+
+ virtual float ThumbRangeFor(int32 channel);
+ |
+
+
+
+ | BMultiChannelControl Class |
+
+
+ |
+
+ |
+
+
+ BMultiChannelControl(BRect frame, const char* name, const char* label, BMessage* model, int32 channel_count = 1, uint32 resize = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW);
+ |
+
+
+ |
+
+ |
+
+
+ BMultiChannelControl(BMessage* from);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BMultiChannelControl();
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* into, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Draw(BRect area) = 0;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseDown(BPoint where) = 0;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void KeyDown(const char* bytes, int32 size) = 0;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameResized(float width, float height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetFont(const BFont* font, uint32 mask = B_FONT_ALL);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AttachedToWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DetachedFromWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ResizeToPreferred();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void GetPreferredSize(float* width, float* height) = 0;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage* message);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetValue(int32 value);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t SetCurrentChannel(int32 channel);
+ |
+
+
+ |
+
+ |
+
+
+ int32 CurrentChannel() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual int32 CountChannels() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual int32 MaxChannelCount() const = 0;
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t SetChannelCount(int32 channel_count);
+ |
+
+
+ |
+
+ |
+
+
+ int32 ValueFor(int32 channel) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual int32 GetValues(int32* out_values, int32 from_channel, int32 channel_count) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t SetValueFor(int32 channel, int32 value);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t SetValues(int32 from_channel, int32 channel_count, const int32* in_values);
+ |
+
+
+ |
+
+ |
+
+
+ status_t SetAllValues(int32 values);
+ |
+
+
+ |
+
+ |
+
+
+ status_t SetLimitsFor(int32 channel, int32 minimum, int32 maximum);
+ |
+
+
+ |
+
+ |
+
+
+ status_t GetLimitsFor(int32 channel, int32* minimum, int32* maximum) const ;
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t SetLimits(int32 from_channel, int32 channel_count, const int32* minimum, const int32* maximum);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t GetLimits(int32 from_channel, int32 channel_count, int32* minimum, int32* maximum) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t SetAllLimits(int32 minimum, int32 maximum);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t SetLimitLabels(const char* min_label, const char* max_label);
+ |
+
+
+ |
+
+ |
+
+
+ const char* MinLimitLabel() const;
+ |
+
+
+ |
+
+ |
+
+
+ const char* MaxLimitLabel() const;
+ |
+
+
+
+ | BOptionControl Class |
+
+
+ |
+
+ |
+
+
+ BOptionControl(BRect frame, const char* name, const char* label, BMessage* message, uint32 resize = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BOptionControl();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage* message);
+ |
+
+
+ |
+
+ |
+
+
+ status_t AddOption(const char* name, int32 value);
+ |
+
+
+ |
+
+ |
+
+
+ virtual boolGetOptionAt(int32 index, const char** out_name, int32* out_value) = 0;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void RemoveOptionAt(int32 index) = 0;
+ |
+
+
+ |
+
+ |
+
+
+ virtual int32 CountOptions() const = 0;
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_tAddOptionAt(const char* name, int32 value, int32 index) = 0;
+ |
+
+
+ |
+
+ |
+
+
+ virtual int32 SelectedOption(const char** name = 0, int32* value = 0) const = 0;
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t SelectOptionFor(int32 value);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t SelectOptionFor(const char *name);
+ |
+
+
+ |
+
+ |
+
+
+ BMessage* MakeValueMessage(int32 value);
+ |
+
+
+
+ | BOptionPopUp Class |
+
+
+ |
+
+ |
+
+
+ BOptionPopUp(BRect frame, const char* name, const char* label, BMessage* message, uint32 resize = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW);
+ |
+
+
+ |
+
+ |
+
+
+ BOptionPopUp(BRect frame, const char* name, const char* label, BMessage* message, bool fixed, uint32 resize = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW);
+ |
+
+
+ |
+
+ |
+
+
+ ~BOptionPopUp();
+ |
+
+
+ |
+
+ |
+
+
+ BMenuField* MenuField();
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool GetOptionAt(int32 index, const char** out_name, int32* out_value);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void RemoveOptionAt(int32 index);
+ |
+
+
+ |
+
+ |
+
+
+ virtual int32 CountOptions() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t AddOptionAt(const char* name, int32 value, int32 index);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllAttached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage* message);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetLabel(const char* text);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetValue(int32 value);
+ |
+
+
+ |
+
+ |
+
+
+ virtual voidSetEnabled(bool on);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ResizeToPreferred();
+ |
+
+
+ |
+
+ |
+
+
+ virtual int32 SelectedOption(const char** outName = 0, int32* outValue = 0) const;
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+ | Legend |
+
+
+
+
+
+  |
+ Functional Spec |
+
+
+  |
+ Use Cases |
+
+
+  |
+ Unit Tests |
+
+
+  |
+ Technical Spec |
+
+
+  |
+ Implementation |
+
+
+  |
+ Completed |
+
+
+ |
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
diff --git a/docs/develop/ikteam/schedule/interfacekit/ControlWidgets.html b/docs/develop/ikteam/schedule/interfacekit/ControlWidgets.html
new file mode 100644
index 0000000000..39b13e59ee
--- /dev/null
+++ b/docs/develop/ikteam/schedule/interfacekit/ControlWidgets.html
@@ -0,0 +1,8194 @@
+
+
+ Control Widgets Tasks
+
+
+Control Widgets Tasks
+
+
+
+
+
+ |
+
+ |
+ Task Summary |
+ Owner |
+
+ |
+
+ |
+
+
+ BControl
+ |
+
+
+ Marc Flerackers
+ |
+
+
+ |
+
+ |
+
+
+ BButton
+ |
+
+
+ Marc Flerackers
+ |
+
+
+ |
+
+ |
+
+
+ BCheckBox
+ |
+
+
+ Marc Flerackers
+ |
+
+
+ |
+
+ |
+
+
+ BColorControl
+ |
+
+
+
+ |
+
+
+ |
+
+ |
+
+
+ BPictureButton
+ |
+
+
+ Graham Macdonald
+ |
+
+
+ |
+
+ |
+
+
+ BRadioButton
+ |
+
+
+ Marc Flerackers
+ |
+
+
+ |
+
+ |
+
+
+ BSlider
+ |
+
+
+ Staffan Hellstrom
+ |
+
+
+ |
+
+ |
+
+
+ BTab
+ |
+
+
+ Marc Flerackers
+ |
+
+
+ |
+
+ |
+
+
+ BTabView
+ |
+
+
+ Marc Flerackers
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+ |
+ Task Details |
+
+
+
+
+ | BControl Class |
+
+
+ |
+
+ |
+
+
+ BControl(BRect frame, const char* name, const char* label, BMessage* message, uint32 resizeMask, uint32 flags);
+ |
+
+
+ |
+
+ |
+
+
+ BControl(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BControl();
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void WindowActivated(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AttachedToWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MakeFocus(bool state = true);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void KeyDown(const char* bytes, int32 numBytes);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseDown(BPoint pt);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseUp(BPoint pt);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DetachedFromWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetLabel(const char* text);
+ |
+
+
+ |
+
+ |
+
+
+ const char* Label() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetValue(int32 value);
+ |
+
+
+ |
+
+ |
+
+
+ int32 Value() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetEnabled(bool on);
+ |
+
+
+ |
+
+ |
+
+
+ bool IsEnabled() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ResizeToPreferred();
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Invoke(BMessage* msg = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllAttached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllDetached();
+ |
+
+
+ |
+
+ |
+
+
+ bool IsFocusChanging() const;
+ |
+
+
+ |
+
+ |
+
+
+ bool IsTracking() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetTracking(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ void SetValueNoUpdate(int32 value);
+ |
+
+
+
+ | BButton Class |
+
+
+ |
+
+ |
+
+
+ BButton(BRect frame, const char* name, const char* label, BMessage* message, uint32 resizeMask = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW | B_NAVIGABLE);
+ |
+
+
+ |
+
+ |
+
+
+ BButton(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BButton();
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Draw(BRect updateRect);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseDown(BPoint where);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AttachedToWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void KeyDown(const char* bytes, int32 numBytes);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MakeDefault(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetLabel(const char* text);
+ |
+
+
+ |
+
+ |
+
+
+ bool IsDefault() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void WindowActivated(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseUp(BPoint pt);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DetachedFromWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetValue(int32 value);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ResizeToPreferred();
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Invoke(BMessage* msg = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameMoved(BPoint new_position);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameResized(float new_width, float new_height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MakeFocus(bool state = true);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllAttached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllDetached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+ |
+
+
+
+ | BCheckBox Class |
+
+
+ |
+
+ |
+
+
+ BCheckBox(BRect frame, const char* name, const char* label, BMessage* message, uint32 resizeMask = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW | B_NAVIGABLE);
+ |
+
+
+ |
+
+ |
+
+
+ BCheckBox(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BCheckBox();
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Draw(BRect updateRect);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AttachedToWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseDown(BPoint where);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void WindowActivated(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void KeyDown(const char* bytes, int32 numBytes);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseUp(BPoint pt);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DetachedFromWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetValue(int32 value);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ResizeToPreferred();
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Invoke(BMessage* msg = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameMoved(BPoint new_position);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameResized(float new_width, float new_height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MakeFocus(bool state = true);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllAttached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllDetached();
+ |
+
+
+
+ | BColorControl Class |
+
+
+ |
+
+ |
+
+
+ BColorControl(BPoint start, color_control_layout layout, float cell_size, const char *name, BMessage *message = NULL, bool use_offscreen = false);
+ |
+
+
+ |
+
+ |
+
+
+ BColorControl(BMessage *data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BColorControl();
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable *Instantiate(BMessage *data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage *data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetValue(int32 color_value);
+ |
+
+
+ |
+
+ |
+
+
+ void SetValue(rgb_color color);
+ |
+
+
+ |
+
+ |
+
+
+ rgb_color ValueAsColor();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetEnabled(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AttachedToWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage *msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Draw(BRect updateRect);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseDown(BPoint where);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void KeyDown(const char *bytes, int32 numBytes);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetCellSize(float size);
+ |
+
+
+ |
+
+ |
+
+
+ float CellSize() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetLayout(color_control_layout layout);
+ |
+
+
+ |
+
+ |
+
+
+ color_control_layout Layout() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void WindowActivated(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseUp(BPoint pt);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage *msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DetachedFromWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void GetPreferredSize(float *width, float *height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ResizeToPreferred();
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Invoke(BMessage *msg = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameMoved(BPoint new_position);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameResized(float new_width, float new_height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual BHandler *ResolveSpecifier(BMessage *msg, int32 index, BMessage *specifier, int32 form, const char *property);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t GetSupportedSuites(BMessage *data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MakeFocus(bool state = true);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllAttached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllDetached();
+ |
+
+
+
+ | BPictureButton Class |
+
+
+ |
+
+ |
+
+
+ BPictureButton(BRect frame, const char* name, BPicture* off, BPicture* on, BMessage* message, uint32 behavior = B_ONE_STATE_BUTTON, uint32 resizeMask = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flgs = B_WILL_DRAW | B_NAVIGABLE);
+ |
+
+
+ |
+
+ |
+
+
+ BPictureButton(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BPictureButton();
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Draw(BRect updateRect);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseDown(BPoint where);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void KeyDown(const char* bytes, int32 numBytes);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetEnabledOn(BPicture* on);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetEnabledOff(BPicture* off);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetDisabledOn(BPicture* on);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetDisabledOff(BPicture* off);
+ |
+
+
+ |
+
+ |
+
+
+ BPicture* EnabledOn() const;
+ |
+
+
+ |
+
+ |
+
+
+ BPicture* EnabledOff() const;
+ |
+
+
+ |
+
+ |
+
+
+ BPicture* DisabledOn() const;
+ |
+
+
+ |
+
+ |
+
+
+ BPicture* DisabledOff() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetBehavior(uint32 behavior);
+ |
+
+
+ |
+
+ |
+
+
+ uint32 Behavior() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseUp(BPoint pt);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void WindowActivated(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AttachedToWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DetachedFromWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetValue(int32 value);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Invoke(BMessage* msg = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameMoved(BPoint new_position);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameResized(float new_width, float new_height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ResizeToPreferred();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MakeFocus(bool state = true);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllAttached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllDetached();
+ |
+
+
+
+ | BRadioButton Class |
+
+
+ |
+
+ |
+
+
+ BRadioButton(BRect frame, const char* name, const char* label, BMessage* message, uint32 resizMask = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW | B_NAVIGABLE);
+ |
+
+
+ |
+
+ |
+
+
+ BRadioButton(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BRadioButton();
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Draw(BRect updateRect);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseDown(BPoint where);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AttachedToWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void KeyDown(const char* bytes, int32 numBytes);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetValue(int32 value);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ResizeToPreferred();
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Invoke(BMessage* msg = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void WindowActivated(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseUp(BPoint pt);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DetachedFromWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameMoved(BPoint new_position);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameResized(float new_width, float new_height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MakeFocus(bool state = true);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllAttached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllDetached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+ |
+
+
+
+ | BSlider Class |
+
+
+ |
+
+ |
+
+
+ BSlider(BRect frame, const char* name, const char* label, BMessage* message, int32 minValue, int32 maxValue, thumb_style thumbType = B_BLOCK_THUMB, uint32 resizingMode = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_NAVIGABLE | B_WILL_DRAW | B_FRAME_EVENTS);
+ |
+
+
+ |
+
+ |
+
+
+ BSlider(BRect frame, const char* name, const char* label, BMessage* message, int32 minValue, int32 maxValue, orientation posture /*= B_HORIZONTAL*/, thumb_style thumbType = B_BLOCK_THUMB, uint32 resizingMode = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_NAVIGABLE | B_WILL_DRAW | B_FRAME_EVENTS);
+ |
+
+
+ |
+
+ |
+
+
+ BSlider(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BSlider();
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Perform(perform_code d, void* arg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void WindowActivated(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AttachedToWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllAttached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllDetached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DetachedFromWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameMoved(BPoint new_position);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameResized(float w,float h);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void KeyDown(const char* bytes, int32 n);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseDown(BPoint);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseUp(BPoint pt);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseMoved(BPoint pt, uint32 c, const BMessage* m);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Pulse();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetLabel(const char* label);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetLimitLabels(const char* minLabel, const char* maxLabel);
+ |
+
+
+ |
+
+ |
+
+
+ const char* MinLimitLabel() const;
+ |
+
+
+ |
+
+ |
+
+
+ const char* MaxLimitLabel() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetValue(int32);
+ |
+
+
+ |
+
+ |
+
+
+ virtual int32 ValueForPoint(BPoint) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetPosition(float);
+ |
+
+
+ |
+
+ |
+
+
+ float Position() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetEnabled(bool on);
+ |
+
+
+ |
+
+ |
+
+
+ void GetLimits(int32* minimum, int32* maximum);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Draw(BRect);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DrawSlider();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DrawBar();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DrawHashMarks();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DrawThumb();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DrawFocusMark();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DrawText();
+ |
+
+
+ |
+
+ |
+
+
+ virtual char* UpdateText() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual BRect BarFrame() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual BRect HashMarksFrame() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual BRect ThumbFrame() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetFlags(uint32 flags);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetResizingMode(uint32 mode);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void GetPreferredSize( float* width, float* height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ResizeToPreferred();
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Invoke(BMessage* msg=NULL);
+ |
+
+
+ |
+
+ |
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetModificationMessage(BMessage* message);
+ |
+
+
+ |
+
+ |
+
+
+ BMessage* ModificationMessage() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetSnoozeAmount(int32);
+ |
+
+
+ |
+
+ |
+
+
+ int32 SnoozeAmount() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetKeyIncrementValue(int32 value);
+ |
+
+
+ |
+
+ |
+
+
+ int32 KeyIncrementValue() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetHashMarkCount(int32 count);
+ |
+
+
+ |
+
+ |
+
+
+ int32 HashMarkCount() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetHashMarks(hash_mark_location where);
+ |
+
+
+ |
+
+ |
+
+
+ hash_mark_location HashMarks() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetStyle(thumb_style s);
+ |
+
+
+ |
+
+ |
+
+
+ thumb_style Style() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetBarColor(rgb_color);
+ |
+
+
+ |
+
+ |
+
+
+ rgb_color BarColor() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void UseFillColor(bool, const rgb_color* c=NULL);
+ |
+
+
+ |
+
+ |
+
+
+ bool FillColor(rgb_color*) const;
+ |
+
+
+ |
+
+ |
+
+
+ BView* OffscreenView() const;
+ |
+
+
+ |
+
+ |
+
+
+ orientation Orientation() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetOrientation(orientation);
+ |
+
+
+ |
+
+ |
+
+
+ float BarThickness() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetBarThickness(float thickness);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetFont(const BFont* font, uint32 properties = B_FONT_ALL);
+ |
+
+
+
+ | BTab Class |
+
+
+ |
+
+ |
+
+
+ BTab(BView* contents=NULL);
+ |
+
+
+ |
+
+ |
+
+
+ BTab(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BTab();
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Perform(uint32 d, void* arg);
+ |
+
+
+ |
+
+ |
+
+
+ const char* Label() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetLabel(const char* label);
+ |
+
+
+ |
+
+ |
+
+
+ bool IsSelected() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Select(BView* owner);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Deselect();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetEnabled(bool on);
+ |
+
+
+ |
+
+ |
+
+
+ bool IsEnabled() const;
+ |
+
+
+ |
+
+ |
+
+
+ void MakeFocus(bool infocus=true);
+ |
+
+
+ |
+
+ |
+
+
+ bool IsFocus() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetView(BView* contents);
+ |
+
+
+ |
+
+ |
+
+
+ BView* View() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DrawFocusMark(BView* owner, BRect tabFrame);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DrawLabel(BView* owner, BRect tabFrame);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DrawTab(BView* owner, BRect tabFrame, tab_position, bool full=true);
+ |
+
+
+
+ | BTabView Class |
+
+
+ |
+
+ |
+
+
+ BTabView(BRect frame, const char* name, button_width width = B_WIDTH_AS_USUAL, uint32 resizingMode = B_FOLLOW_ALL, uint32 flags = B_FULL_UPDATE_ON_RESIZE | B_WILL_DRAW | B_NAVIGABLE_JUMP | B_FRAME_EVENTS | B_NAVIGABLE);
+ |
+
+
+ |
+
+ |
+
+
+ BTabView(BMessage*);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BTabView();
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage*);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage*, bool deep=true) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Perform(perform_code d, void* arg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void WindowActivated(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AttachedToWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllAttached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllDetached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DetachedFromWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameMoved(BPoint new_position);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameResized(float w,float h);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void KeyDown(const char* bytes, int32 n);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseDown(BPoint);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseUp(BPoint);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Pulse();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Select(int32 tabIndex);
+ |
+
+
+ |
+
+ |
+
+
+ int32 Selection() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MakeFocus(bool focusState = true);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetFocusTab(int32 tabIndex, bool focusState);
+ |
+
+
+ |
+
+ |
+
+
+ int32 FocusTab() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Draw(BRect);
+ |
+
+
+ |
+
+ |
+
+
+ virtual BRect DrawTabs();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DrawBox(BRect selectedTabFrame);
+ |
+
+
+ |
+
+ |
+
+
+ virtual BRect TabFrame(int32 tabIndex) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetFlags(uint32 flags);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetResizingMode(uint32 mode);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void GetPreferredSize( float* width, float* height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ResizeToPreferred();
+ |
+
+
+ |
+
+ |
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AddTab(BView* tabContents, BTab* tab=NULL);
+ |
+
+
+ |
+
+ |
+
+
+ virtual BTab* RemoveTab(int32 tabIndex);
+ |
+
+
+ |
+
+ |
+
+
+ virtual BTab* TabAt(int32 tabIndex) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetTabWidth(button_width s);
+ |
+
+
+ |
+
+ |
+
+
+ button_width TabWidth() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetTabHeight(float height);
+ |
+
+
+ |
+
+ |
+
+
+ float TabHeight() const;
+ |
+
+
+ |
+
+ |
+
+
+ BView* ContainerView() const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 CountTabs() const;
+ |
+
+
+ |
+
+ |
+
+
+ BView* ViewForTab(int32 tabIndex) const;
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+ | Legend |
+
+
+
+
+
+  |
+ Functional Spec |
+
+
+  |
+ Use Cases |
+
+
+  |
+ Unit Tests |
+
+
+  |
+ Technical Spec |
+
+
+  |
+ Implementation |
+
+
+  |
+ Completed |
+
+
+ |
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
diff --git a/docs/develop/ikteam/schedule/interfacekit/Group1Support.html b/docs/develop/ikteam/schedule/interfacekit/Group1Support.html
new file mode 100644
index 0000000000..d9dc32b18b
--- /dev/null
+++ b/docs/develop/ikteam/schedule/interfacekit/Group1Support.html
@@ -0,0 +1,2629 @@
+
+
+ Group 1 Support Tasks
+
+
+Group 1 Support Tasks
+
+
+
+
+
+ |
+
+ |
+ Task Summary |
+ Owner |
+
+ |
+
+ |
+
+
+ BPoint
+ |
+
+
+ Greg Gelfond
+ |
+
+
+ |
+
+ |
+
+
+ BPolygon
+ |
+
+
+ Staffan Hellstrom
+ |
+
+
+ |
+
+ |
+
+
+ BRect
+ |
+
+
+ Issac Yonemoto
+ |
+
+
+ |
+
+ |
+
+
+ BRegion
+ |
+
+
+ Issac Yonemoto
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+ |
+ Task Details |
+
+
+
+
+ | BPoint Class |
+
+
+ |
+
+ |
+
+
+ BPoint();
+ |
+
+
+ |
+
+ |
+
+
+ BPoint(float X, float Y);
+ |
+
+
+ |
+
+ |
+
+
+ BPoint(const BPoint& pt);
+ |
+
+
+ |
+
+ |
+
+
+ BPoint& operator=(const BPoint& from);
+ |
+
+
+ |
+
+ |
+
+
+ void Set(float X, float Y);
+ |
+
+
+ |
+
+ |
+
+
+ void ConstrainTo(BRect rect);
+ |
+
+
+ |
+
+ |
+
+
+ void PrintToStream() const;
+ |
+
+
+ |
+
+ |
+
+
+ BPoint operator+(const BPoint&) const;
+ |
+
+
+ |
+
+ |
+
+
+ BPoint operator-(const BPoint&) const;
+ |
+
+
+ |
+
+ |
+
+
+ BPoint& operator+=(const BPoint&);
+ |
+
+
+ |
+
+ |
+
+
+ BPoint& operator-=(const BPoint&);
+ |
+
+
+ |
+
+ |
+
+
+ bool operator!=(const BPoint&) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool operator==(const BPoint&) const;
+ |
+
+
+
+ | BPolygon Class |
+
+
+ |
+
+ |
+
+
+ BPolygon(const BPoint* ptArray, int32 numPoints);
+ |
+
+
+ |
+
+ |
+
+
+ BPolygon();
+ |
+
+
+ |
+
+ |
+
+
+ BPolygon(const BPolygon* poly);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BPolygon();
+ |
+
+
+ |
+
+ |
+
+
+ BPolygon& operator=(const BPolygon& from);
+ |
+
+
+ |
+
+ |
+
+
+ BRect Frame() const;
+ |
+
+
+ |
+
+ |
+
+
+ void AddPoints(const BPoint* ptArray, int32 numPoints);
+ |
+
+
+ |
+
+ |
+
+
+ int32 CountPoints() const;
+ |
+
+
+ |
+
+ |
+
+
+ void MapTo(BRect srcRect, BRect dstRect);
+ |
+
+
+ |
+
+ |
+
+
+ void PrintToStream() const;
+ |
+
+
+
+ | BRect Class |
+
+
+ |
+
+ |
+
+
+ BRect();
+ |
+
+
+ |
+
+ |
+
+
+ BRect(const BRect &);
+ |
+
+
+ |
+
+ |
+
+
+ BRect(float l, float t, float r, float b);
+ |
+
+
+ |
+
+ |
+
+
+ BRect(BPoint leftTop, BPoint rightBottom);
+ |
+
+
+ |
+
+ |
+
+
+ BRect& operator=(const BRect &from);
+ |
+
+
+ |
+
+ |
+
+
+ void Set(float l, float t, float r, float b);
+ |
+
+
+ |
+
+ |
+
+
+ void PrintToStream() const;
+ |
+
+
+ |
+
+ |
+
+
+ BPoint LeftTop() const;
+ |
+
+
+ |
+
+ |
+
+
+ BPoint RightBottom() const;
+ |
+
+
+ |
+
+ |
+
+
+ BPoint LeftBottom() const;
+ |
+
+
+ |
+
+ |
+
+
+ BPoint RightTop() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetLeftTop(const BPoint);
+ |
+
+
+ |
+
+ |
+
+
+ void SetRightBottom(const BPoint);
+ |
+
+
+ |
+
+ |
+
+
+ void SetLeftBottom(const BPoint);
+ |
+
+
+ |
+
+ |
+
+
+ void SetRightTop(const BPoint);
+ |
+
+
+ |
+
+ |
+
+
+ void InsetBy(BPoint);
+ |
+
+
+ |
+
+ |
+
+
+ void InsetBy(float dx, float dy);
+ |
+
+
+ |
+
+ |
+
+
+ void OffsetBy(BPoint);
+ |
+
+
+ |
+
+ |
+
+
+ void OffsetBy(float dx, float dy);
+ |
+
+
+ |
+
+ |
+
+
+ void OffsetTo(BPoint);
+ |
+
+
+ |
+
+ |
+
+
+ void OffsetTo(float x, float y);
+ |
+
+
+ |
+
+ |
+
+
+ BRect& InsetBySelf(BPoint);
+ |
+
+
+ |
+
+ |
+
+
+ BRect& InsetBySelf(float dx, float dy);
+ |
+
+
+ |
+
+ |
+
+
+ BRect InsetByCopy(BPoint);
+ |
+
+
+ |
+
+ |
+
+
+ BRect InsetByCopy(float dx, float dy);
+ |
+
+
+ |
+
+ |
+
+
+ BRect& OffsetBySelf(BPoint);
+ |
+
+
+ |
+
+ |
+
+
+ BRect& OffsetBySelf(float dx, float dy);
+ |
+
+
+ |
+
+ |
+
+
+ BRect OffsetByCopy(BPoint);
+ |
+
+
+ |
+
+ |
+
+
+ BRect OffsetByCopy(float dx, float dy);
+ |
+
+
+ |
+
+ |
+
+
+ BRect& OffsetToSelf(BPoint);
+ |
+
+
+ |
+
+ |
+
+
+ BRect& OffsetToSelf(float dx, float dy);
+ |
+
+
+ |
+
+ |
+
+
+ BRect OffsetToCopy(BPoint);
+ |
+
+
+ |
+
+ |
+
+
+ BRect OffsetToCopy(float dx, float dy);
+ |
+
+
+ |
+
+ |
+
+
+ bool operator==(BRect) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool operator!=(BRect) const;
+ |
+
+
+ |
+
+ |
+
+
+ BRect operator&(BRect) const;
+ |
+
+
+ |
+
+ |
+
+
+ BRect operator|(BRect) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool Intersects(BRect r) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool IsValid() const;
+ |
+
+
+ |
+
+ |
+
+
+ float Width() const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 IntegerWidth() const;
+ |
+
+
+ |
+
+ |
+
+
+ float Height() const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 IntegerHeight() const;
+ |
+
+
+ |
+
+ |
+
+
+ bool Contains(BPoint) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool Contains(BRect) const;
+ |
+
+
+
+ | BRegion Class |
+
+
+ |
+
+ |
+
+
+ BRegion();
+ |
+
+
+ |
+
+ |
+
+
+ BRegion(const BRegion ®ion);
+ |
+
+
+ |
+
+ |
+
+
+ BRegion(const BRect rect);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BRegion();
+ |
+
+
+ |
+
+ |
+
+
+ BRegion& operator=(const BRegion &from);
+ |
+
+
+ |
+
+ |
+
+
+ BRect Frame() const;
+ |
+
+
+ |
+
+ |
+
+
+ clipping_rect FrameInt() const;
+ |
+
+
+ |
+
+ |
+
+
+ BRect RectAt(int32 index);
+ |
+
+
+ |
+
+ |
+
+
+ clipping_rect RectAtInt(int32 index);
+ |
+
+
+ |
+
+ |
+
+
+ int32 CountRects();
+ |
+
+
+ |
+
+ |
+
+
+ void Set(BRect newBounds);
+ |
+
+
+ |
+
+ |
+
+
+ void Set(clipping_rect newBounds);
+ |
+
+
+ |
+
+ |
+
+
+ bool Intersects(BRect r) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool Intersects(clipping_rect r) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool Contains(BPoint pt) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool Contains(int32 x, int32 y);
+ |
+
+
+ |
+
+ |
+
+
+ void PrintToStream() const;
+ |
+
+
+ |
+
+ |
+
+
+ void OffsetBy(int32 dh, int32 dv);
+ |
+
+
+ |
+
+ |
+
+
+ void MakeEmpty();
+ |
+
+
+ |
+
+ |
+
+
+ void Include(BRect r);
+ |
+
+
+ |
+
+ |
+
+
+ void Include(clipping_rect r);
+ |
+
+
+ |
+
+ |
+
+
+ void Include(const BRegion*);
+ |
+
+
+ |
+
+ |
+
+
+ void Exclude(BRect r);
+ |
+
+
+ |
+
+ |
+
+
+ void Exclude(clipping_rect r);
+ |
+
+
+ |
+
+ |
+
+
+ void Exclude(const BRegion*);
+ |
+
+
+ |
+
+ |
+
+
+ void IntersectWith(const BRegion*);
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+ | Legend |
+
+
+
+
+
+  |
+ Functional Spec |
+
+
+  |
+ Use Cases |
+
+
+  |
+ Unit Tests |
+
+
+  |
+ Technical Spec |
+
+
+  |
+ Implementation |
+
+
+  |
+ Completed |
+
+
+ |
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
diff --git a/docs/develop/ikteam/schedule/interfacekit/Group2Support.html b/docs/develop/ikteam/schedule/interfacekit/Group2Support.html
new file mode 100644
index 0000000000..7abfae7f40
--- /dev/null
+++ b/docs/develop/ikteam/schedule/interfacekit/Group2Support.html
@@ -0,0 +1,1962 @@
+
+
+ Group 2 Support Tasks
+
+
+Group 2 Support Tasks
+
+
+
+
+
+ |
+
+ |
+ Task Summary |
+ Owner |
+
+ |
+
+ |
+
+
+ BPicture
+ |
+
+
+
+ |
+
+
+ |
+
+ |
+
+
+ BScreen
+ |
+
+
+
+ |
+
+
+ |
+
+ |
+
+
+ BShape
+ |
+
+
+ Greg Gelfond
+ |
+
+
+ |
+
+ |
+
+
+ BShapeIterator
+ |
+
+
+
+ |
+
+
+ |
+
+ |
+
+
+ Screen Support
+ |
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+ |
+ Task Details |
+
+
+
+
+ | BPicture Class |
+
+
+ |
+
+ |
+
+
+ BPicture();
+ |
+
+
+ |
+
+ |
+
+
+ BPicture(const BPicture &original);
+ |
+
+
+ |
+
+ |
+
+
+ BPicture(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BPicture();
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Perform(perform_code d, void* arg);
+ |
+
+
+ |
+
+ |
+
+
+ status_t Play(void* *callBackTable, int32 tableEntries, void* userData);
+ |
+
+
+ |
+
+ |
+
+
+ status_t Flatten(BDataIO* stream);
+ |
+
+
+ |
+
+ |
+
+
+ status_t Unflatten(BDataIO* stream);
+ |
+
+
+
+ | BScreen Class |
+
+
+ |
+
+ |
+
+
+ BScreen(screen_id id = B_MAIN_SCREEN_ID);
+ |
+
+
+ |
+
+ |
+
+
+ BScreen(BWindow* win);
+ |
+
+
+ |
+
+ |
+
+
+ ~BScreen();
+ |
+
+
+ |
+
+ |
+
+
+ bool IsValid();
+ |
+
+
+ |
+
+ |
+
+
+ status_t SetToNext();
+ |
+
+
+ |
+
+ |
+
+
+ color_space ColorSpace();
+ |
+
+
+ |
+
+ |
+
+
+ BRect Frame();
+ |
+
+
+ |
+
+ |
+
+
+ screen_id ID();
+ |
+
+
+ |
+
+ |
+
+
+ status_t WaitForRetrace();
+ |
+
+
+ |
+
+ |
+
+
+ status_t WaitForRetrace(bigtime_t timeout);
+ |
+
+
+ |
+
+ |
+
+
+ uint8 IndexForColor(rgb_color rgb);
+ |
+
+
+ |
+
+ |
+
+
+ uint8 IndexForColor(uint8 r, uint8 g, uint8 b, uint8 a = 255);
+ |
+
+
+ |
+
+ |
+
+
+ rgb_color ColorForIndex(const uint8 index);
+ |
+
+
+ |
+
+ |
+
+
+ uint8 InvertIndex(uint8 index);
+ |
+
+
+ |
+
+ |
+
+
+ const color_map* ColorMap();
+ |
+
+
+ |
+
+ |
+
+
+ status_t GetBitmap(BBitmap** screen_shot, bool draw_cursor = true, BRect* bound = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ReadBitmap(BBitmap* buffer, bool draw_cursor = true, BRect* bound = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ rgb_color DesktopColor();
+ |
+
+
+ |
+
+ |
+
+
+ rgb_color DesktopColor(uint32 index);
+ |
+
+
+ |
+
+ |
+
+
+ void SetDesktopColor(rgb_color rgb, bool stick = true);
+ |
+
+
+ |
+
+ |
+
+
+ void SetDesktopColor(rgb_color rgb, uint32 index, bool stick = true);
+ |
+
+
+ |
+
+ |
+
+
+ status_t ProposeMode(display_mode* target, const display_mode* low, const display_mode* high);
+ |
+
+
+ |
+
+ |
+
+
+ status_t GetModeList(display_mode** mode_list, uint32* count);
+ |
+
+
+ |
+
+ |
+
+
+ status_t GetMode(display_mode* mode);
+ |
+
+
+ |
+
+ |
+
+
+ status_t GetMode(uint32 workspace, display_mode* mode);
+ |
+
+
+ |
+
+ |
+
+
+ status_t SetMode(display_mode* mode, bool makeDefault = false);
+ |
+
+
+ |
+
+ |
+
+
+ status_t SetMode(uint32 workspace, display_mode* mode, bool makeDefault = false);
+ |
+
+
+ |
+
+ |
+
+
+ status_t GetDeviceInfo(accelerant_device_info* adi);
+ |
+
+
+ |
+
+ |
+
+
+ status_t GetPixelClockLimits(display_mode* mode, uint32* low, uint32* high);
+ |
+
+
+ |
+
+ |
+
+
+ status_t GetTimingConstraints(display_timing_constraints* dtc);
+ |
+
+
+ |
+
+ |
+
+
+ status_t SetDPMS(uint32 dpms_state);
+ |
+
+
+ |
+
+ |
+
+
+ uint32 DPMSState(void);
+ |
+
+
+ |
+
+ |
+
+
+ uint32 DPMSCapabilites(void);
+ |
+
+
+ |
+
+ |
+
+
+ BPrivateScreen* private_screen();
+ |
+
+
+
+ | BShape Class |
+
+
+ |
+
+ |
+
+
+ BShape();
+ |
+
+
+ |
+
+ |
+
+
+ BShape(const BShape& copyFrom);
+ |
+
+
+ |
+
+ |
+
+
+ BShape(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BShape();
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* into, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ void Clear();
+ |
+
+
+ |
+
+ |
+
+
+ BRect Bounds() const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t AddShape(const BShape* other);
+ |
+
+
+ |
+
+ |
+
+
+ status_t MoveTo(BPoint point);
+ |
+
+
+ |
+
+ |
+
+
+ status_t LineTo(BPoint linePoint);
+ |
+
+
+ |
+
+ |
+
+
+ status_t BezierTo(BPoint controlPoints[3]);
+ |
+
+
+ |
+
+ |
+
+
+ status_t Close();
+ |
+
+
+
+ | BShapeIterator Class |
+
+
+ |
+
+ |
+
+
+ BShapeIterator();
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BShapeIterator();
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t IterateMoveTo(BPoint* point);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t IterateLineTo(int32 lineCount, BPoint* linePts);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t IterateBezierTo(int32 bezierCount, BPoint* bezierPts);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t IterateClose();
+ |
+
+
+ |
+
+ |
+
+
+ status_t Iterate(BShape* shape);
+ |
+
+
+
+ | Screen Support Functions |
+
+
+ |
+
+ |
+
+
+ const color_map* system_colors();
+ |
+
+
+ |
+
+ |
+
+
+ status_t set_screen_space(int32 index, uint32 res, bool stick = true);
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+ | Legend |
+
+
+
+
+
+  |
+ Functional Spec |
+
+
+  |
+ Use Cases |
+
+
+  |
+ Unit Tests |
+
+
+  |
+ Technical Spec |
+
+
+  |
+ Implementation |
+
+
+  |
+ Completed |
+
+
+ |
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
diff --git a/docs/develop/ikteam/schedule/interfacekit/Group3Support.html b/docs/develop/ikteam/schedule/interfacekit/Group3Support.html
new file mode 100644
index 0000000000..37090d0996
--- /dev/null
+++ b/docs/develop/ikteam/schedule/interfacekit/Group3Support.html
@@ -0,0 +1,2421 @@
+
+
+ Group 3 Support Tasks
+
+
+Group 3 Support Tasks
+
+
+
+
+
+ |
+
+ |
+ Task Summary |
+ Owner |
+
+ |
+
+ |
+
+
+ BBitmap
+ |
+
+
+ Xavier Castellan
+ |
+
+
+ |
+
+ |
+
+
+ BFont
+ |
+
+
+
+ |
+
+
+ |
+
+ |
+
+
+ Font Support
+ |
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+ |
+ Task Details |
+
+
+
+
+ | BBitmap Class |
+
+
+ |
+
+ |
+
+
+ BBitmap(BRect bounds, uint32 flags, color_space depth, int32 bytesPerRow=B_ANY_BYTES_PER_ROW, screen_id screenID=B_MAIN_SCREEN_ID);
+ |
+
+
+ |
+
+ |
+
+
+ BBitmap(BRect bounds, color_space depth, bool accepts_views = false, bool need_contiguous = false);
+ |
+
+
+ |
+
+ |
+
+
+ BBitmap(const BBitmap* source, bool accepts_views = false, bool need_contiguous = false);
+ |
+
+
+ |
+
+ |
+
+
+ BBitmap(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BBitmap();
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t InitCheck() const;
+ |
+
+
+ |
+
+ |
+
+
+ bool IsValid() const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t LockBits(uint32* state=NULL);
+ |
+
+
+ |
+
+ |
+
+
+ void UnlockBits();
+ |
+
+
+ |
+
+ |
+
+
+ area_id Area() const;
+ |
+
+
+ |
+
+ |
+
+
+ void* Bits() const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 BitsLength() const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 BytesPerRow() const;
+ |
+
+
+ |
+
+ |
+
+
+ color_space ColorSpace() const;
+ |
+
+
+ |
+
+ |
+
+
+ BRect Bounds() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetBits(const void* data, int32 length, int32 offset, color_space cs);
+ |
+
+
+ |
+
+ |
+
+
+ status_t GetOverlayRestrictions(overlay_restrictions* restrict) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AddChild(BView* view);
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool RemoveChild(BView* view);
+ |
+
+
+ |
+
+ |
+
+
+ int32 CountChildren() const;
+ |
+
+
+ |
+
+ |
+
+
+ BView* ChildAt(int32 index) const;
+ |
+
+
+ |
+
+ |
+
+
+ BView* FindView(const char* view_name) const;
+ |
+
+
+ |
+
+ |
+
+
+ BView* FindView(BPoint point) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool Lock();
+ |
+
+
+ |
+
+ |
+
+
+ void Unlock();
+ |
+
+
+ |
+
+ |
+
+
+ bool IsLocked() const;
+ |
+
+
+
+ | BFont Class |
+
+
+ |
+
+ |
+
+
+ BFont();
+ |
+
+
+ |
+
+ |
+
+
+ BFont(const BFont &font);
+ |
+
+
+ |
+
+ |
+
+
+ BFont(const BFont* font);
+ |
+
+
+ |
+
+ |
+
+
+ status_t SetFamilyAndStyle(const font_family family,
+ |
+
+
+ |
+
+ |
+
+
+ void SetFamilyAndStyle(uint32 code);
+ |
+
+
+ |
+
+ |
+
+
+ status_t SetFamilyAndFace(const font_family family, uint16 face);
+ |
+
+
+ |
+
+ |
+
+
+ void SetSize(float size);
+ |
+
+
+ |
+
+ |
+
+
+ void SetShear(float shear);
+ |
+
+
+ |
+
+ |
+
+
+ void SetRotation(float rotation);
+ |
+
+
+ |
+
+ |
+
+
+ void SetSpacing(uint8 spacing);
+ |
+
+
+ |
+
+ |
+
+
+ void SetEncoding(uint8 encoding);
+ |
+
+
+ |
+
+ |
+
+
+ void SetFace(uint16 face);
+ |
+
+
+ |
+
+ |
+
+
+ void SetFlags(uint32 flags);
+ |
+
+
+ |
+
+ |
+
+
+ void GetFamilyAndStyle(font_family* family, font_style* style) const;
+ |
+
+
+ |
+
+ |
+
+
+ uint32 FamilyAndStyle() const;
+ |
+
+
+ |
+
+ |
+
+
+ float Size() const;
+ |
+
+
+ |
+
+ |
+
+
+ float Shear() const;
+ |
+
+
+ |
+
+ |
+
+
+ float Rotation() const;
+ |
+
+
+ |
+
+ |
+
+
+ uint8 Spacing() const;
+ |
+
+
+ |
+
+ |
+
+
+ uint8 Encoding() const;
+ |
+
+
+ |
+
+ |
+
+
+ uint16 Face() const;
+ |
+
+
+ |
+
+ |
+
+
+ uint32 Flags() const;
+ |
+
+
+ |
+
+ |
+
+
+ font_direction Direction() const;
+ |
+
+
+ |
+
+ |
+
+
+ bool IsFixed() const;
+ |
+
+
+ |
+
+ |
+
+
+ bool IsFullAndHalfFixed() const;
+ |
+
+
+ |
+
+ |
+
+
+ BRect BoundingBox() const;
+ |
+
+
+ |
+
+ |
+
+
+ unicode_block Blocks() const;
+ |
+
+
+ |
+
+ |
+
+
+ font_file_format FileFormat() const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 CountTuned() const;
+ |
+
+
+ |
+
+ |
+
+
+ void GetTunedInfo(int32 index, tuned_font_info* info) const;
+ |
+
+
+ |
+
+ |
+
+
+ void TruncateString(BString* in_out, uint32 mode, float width) const;
+ |
+
+
+ |
+
+ |
+
+
+ void GetTruncatedStrings(const char* stringArray[], int32 numStrings, uint32 mode, float width, BString resultArray[]) const;
+ |
+
+
+ |
+
+ |
+
+
+ void GetTruncatedStrings(const char* stringArray[], int32 numStrings, uint32 mode, float width, char* resultArray[]) const;
+ |
+
+
+ |
+
+ |
+
+
+ float StringWidth(const char* string) const;
+ |
+
+
+ |
+
+ |
+
+
+ float StringWidth(const char* string, int32 length) const;
+ |
+
+
+ |
+
+ |
+
+
+ void GetStringWidths(const char* stringArray[], const int32 lengthArray[], int32 numStrings, float widthArray[]) const;
+ |
+
+
+ |
+
+ |
+
+
+ void GetEscapements(const char charArray[], int32 numChars, float escapementArray[]) const;
+ |
+
+
+ |
+
+ |
+
+
+ void GetEscapements(const char charArray[], int32 numChars, escapement_delta* delta, float escapementArray[]) const;
+ |
+
+
+ |
+
+ |
+
+
+ void GetEscapements(const char charArray[], int32 numChars, escapement_delta* delta, BPoint escapementArray[]) const;
+ |
+
+
+ |
+
+ |
+
+
+ void GetEscapements(const char charArray[], int32 numChars, escapement_delta* delta, BPoint escapementArray[], BPoint offsetArray[]) const;
+ |
+
+
+ |
+
+ |
+
+
+ void GetEdges(const char charArray[], int32 numBytes, edge_info edgeArray[]) const;
+ |
+
+
+ |
+
+ |
+
+
+ void GetHeight(font_height* height) const;
+ |
+
+
+ |
+
+ |
+
+
+ void GetBoundingBoxesAsGlyphs(const char charArray[], int32 numChars, font_metric_mode mode, BRect boundingBoxArray[]) const;
+ |
+
+
+ |
+
+ |
+
+
+ void GetBoundingBoxesAsString(const char charArray[], int32 numChars, font_metric_mode mode, escapement_delta* delta, BRect boundingBoxArray[]) const;
+ |
+
+
+ |
+
+ |
+
+
+ void GetBoundingBoxesForStrings(const char* stringArray[], int32 numStrings, font_metric_mode mode, escapement_delta deltas[], BRect boundingBoxArray[]) const;
+ |
+
+
+ |
+
+ |
+
+
+ void GetGlyphShapes(const char charArray[], int32 numChars, BShape* glyphShapeArray[]) const;
+ |
+
+
+ |
+
+ |
+
+
+ void GetHasGlyphs(const char charArray[], int32 numChars, bool hasArray[]) const;
+ |
+
+
+ |
+
+ |
+
+
+ BFont& operator=(const BFont &font);
+ |
+
+
+ |
+
+ |
+
+
+ bool operator==(const BFont &font) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool operator!=(const BFont &font) const;
+ |
+
+
+ |
+
+ |
+
+
+ void PrintToStream() const;
+ |
+
+
+
+ | Font Support Functions |
+
+
+ |
+
+ |
+
+
+ int32 count_font_families();
+ |
+
+
+ |
+
+ |
+
+
+ status_t get_font_family(int32 index, font_family* name, uint32* flags = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ int32 count_font_styles(font_family name);
+ |
+
+
+ |
+
+ |
+
+
+ status_t get_font_style(font_family family, int32 index, font_style* name, uint32* flags = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ status_t get_font_style(font_family family, int32 index, font_style* name, uint16* face, uint32* flags = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ bool update_font_families(bool check_only);
+ |
+
+
+ |
+
+ |
+
+
+ status_t get_font_cache_info(uint32 id, void* set);
+ |
+
+
+ |
+
+ |
+
+
+ status_t set_font_cache_info(uint32 id, void* set);
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+ | Legend |
+
+
+
+
+
+  |
+ Functional Spec |
+
+
+  |
+ Use Cases |
+
+
+  |
+ Unit Tests |
+
+
+  |
+ Technical Spec |
+
+
+  |
+ Implementation |
+
+
+  |
+ Completed |
+
+
+ |
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
diff --git a/docs/develop/ikteam/schedule/interfacekit/InterfaceKitMilestones.html b/docs/develop/ikteam/schedule/interfacekit/InterfaceKitMilestones.html
new file mode 100644
index 0000000000..3212236db4
--- /dev/null
+++ b/docs/develop/ikteam/schedule/interfacekit/InterfaceKitMilestones.html
@@ -0,0 +1,195 @@
+
+
+ Interface Kit Milestones
+
+
+
+Interface Kit Milestones
+
+
+ -
+ Interface specs completed for all classes, functions, structs
+
+
+
+
+
+
+
+ -
+ Use cases completed for all classes, functions, structs
+
+
+
+ -
+ Unit tests completed for all classes, functions, structs
+
+
+
+
+
+
+
+ -
+ Design discussions completed for all classes, functions, structs
+
+
+
+ -
+ Group 1 Support complete
+
+
+
+
+
+ |
+
+ |
+
+ |
+
+ 25% |
+
+
+
+
+ -
+ Group 2 Support complete
+
+
-
+ Group 3 Support complete
+
+
-
+ Control Widgets complete
+
+
+
+
+
+ -
+ Non-Control Widgets complete
+
+
+
+
+
+ |
+
+ |
+
+ |
+
+ 13% |
+
+
+
+
+ -
+ Scrolling Support complete
+
+
-
+ Menuing Support complete
+
+
-
+ ListView Support complete
+
+
-
+ TextView Support complete
+
+
-
+ Miscellaneous complete
+
+
+
+
+
+ -
+ Replicant Support complete
+
+
-
+ Advanced Control Widgets complete
+
+
+
+ -
+ Alpha
+
+ -
+ Beta 1
+
+ -
+ Beta 2
+
+ -
+ Release Candidate 1
+
+ -
+ 1.0!
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
+
diff --git a/docs/develop/ikteam/schedule/interfacekit/ListViewSupport.html b/docs/develop/ikteam/schedule/interfacekit/ListViewSupport.html
new file mode 100644
index 0000000000..464a6e7a8e
--- /dev/null
+++ b/docs/develop/ikteam/schedule/interfacekit/ListViewSupport.html
@@ -0,0 +1,4154 @@
+
+
+ ListView Support Tasks
+
+
+ListView Support Tasks
+
+
+
+
+
+ |
+
+ |
+ Task Summary |
+ Owner |
+
+ |
+
+ |
+
+
+ BListItem
+ |
+
+
+ Ulrich Wimboeck
+ |
+
+
+ |
+
+ |
+
+
+ BStringItem
+ |
+
+
+ Greg Gelfond
+ |
+
+
+ |
+
+ |
+
+
+ BListView
+ |
+
+
+ Ulrich Wimboeck
+ |
+
+
+ |
+
+ |
+
+
+ BOutlineListView
+ |
+
+
+ Ulrich Wimboeck
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+ |
+ Task Details |
+
+
+
+
+ | BListItem Class |
+
+
+ |
+
+ |
+
+
+ BListItem(uint32 outlineLevel = 0, bool expanded = true);
+ |
+
+
+ |
+
+ |
+
+
+ BListItem(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BListItem();
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ float Height() const;
+ |
+
+
+ |
+
+ |
+
+
+ float Width() const;
+ |
+
+
+ |
+
+ |
+
+
+ bool IsSelected() const;
+ |
+
+
+ |
+
+ |
+
+
+ void Select();
+ |
+
+
+ |
+
+ |
+
+
+ void Deselect();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetEnabled(bool on);
+ |
+
+
+ |
+
+ |
+
+
+ bool IsEnabled() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetHeight(float height);
+ |
+
+
+ |
+
+ |
+
+
+ void SetWidth(float width);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DrawItem(BView* owner, BRect bounds, bool complete = false) = 0;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Update(BView* owner, const BFont* font);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Perform(perform_code d, void* arg);
+ |
+
+
+ |
+
+ |
+
+
+ bool IsExpanded() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetExpanded(bool expanded);
+ |
+
+
+ |
+
+ |
+
+
+ uint32 OutlineLevel() const;
+ |
+
+
+ |
+
+ |
+
+
+ bool IsItemVisible() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetItemVisible(bool);
+ |
+
+
+
+ | BStringItem Class |
+
+
+ |
+
+ |
+
+
+ BStringItem(const char* text, uint32 outlineLevel = 0, bool expanded = true);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BStringItem();
+ |
+
+
+ |
+
+ |
+
+
+ BStringItem(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DrawItem(BView* owner, BRect frame, bool complete = false);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetText(const char* text);
+ |
+
+
+ |
+
+ |
+
+
+ const char* Text() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Update(BView* owner, const BFont* font);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Perform(perform_code d, void* arg);
+ |
+
+
+
+ | BListView Class |
+
+
+ |
+
+ |
+
+
+ BListView(BRect frame, const char *name, list_view_type type = B_SINGLE_SELECTION_LIST, uint32 resizeMask = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE);
+ |
+
+
+ |
+
+ |
+
+
+ BListView(BMessage *data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BListView();
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable *Instantiate(BMessage *data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage *data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Draw(BRect updateRect);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage *msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseDown(BPoint where);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void KeyDown(const char *bytes, int32 numBytes);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MakeFocus(bool state = true);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameResized(float newWidth, float newHeight);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void TargetedByScrollView(BScrollView *scroller);
+ |
+
+
+ |
+
+ |
+
+
+ void ScrollTo(float x, float y);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ScrollTo(BPoint where);
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool AddItem(BListItem *item);
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool AddItem(BListItem *item, int32 atIndex);
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool AddList(BList *newItems);
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool AddList(BList *newItems, int32 atIndex);
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool RemoveItem(BListItem *item);
+ |
+
+
+ |
+
+ |
+
+
+ virtual BListItem *RemoveItem(int32 index);
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool RemoveItems(int32 index, int32 count);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetSelectionMessage(BMessage *message);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetInvocationMessage(BMessage *message);
+ |
+
+
+ |
+
+ |
+
+
+ BMessage *SelectionMessage() const;
+ |
+
+
+ |
+
+ |
+
+
+ uint32 SelectionCommand() const;
+ |
+
+
+ |
+
+ |
+
+
+ BMessage *InvocationMessage() const;
+ |
+
+
+ |
+
+ |
+
+
+ uint32 InvocationCommand() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetListType(list_view_type type);
+ |
+
+
+ |
+
+ |
+
+
+ list_view_type ListType() const;
+ |
+
+
+ |
+
+ |
+
+
+ BListItem *ItemAt(int32 index) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 IndexOf(BPoint point) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 IndexOf(BListItem *item) const;
+ |
+
+
+ |
+
+ |
+
+
+ BListItem *FirstItem() const;
+ |
+
+
+ |
+
+ |
+
+
+ BListItem *LastItem() const;
+ |
+
+
+ |
+
+ |
+
+
+ bool HasItem(BListItem *item) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 CountItems() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MakeEmpty();
+ |
+
+
+ |
+
+ |
+
+
+ bool IsEmpty() const;
+ |
+
+
+ |
+
+ |
+
+
+ void DoForEach(bool (*func)(BListItem *));
+ |
+
+
+ |
+
+ |
+
+
+ void DoForEach(bool (*func)(BListItem *, void *), void *);
+ |
+
+
+ |
+
+ |
+
+
+ const BListItem **Items() const;
+ |
+
+
+ |
+
+ |
+
+
+ void InvalidateItem(int32 index);
+ |
+
+
+ |
+
+ |
+
+
+ void ScrollToSelection();
+ |
+
+
+ |
+
+ |
+
+
+ void Select(int32 index, bool extend = false);
+ |
+
+
+ |
+
+ |
+
+
+ void Select(int32 from, int32 to, bool extend = false);
+ |
+
+
+ |
+
+ |
+
+
+ bool IsItemSelected(int32 index) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 CurrentSelection(int32 index = 0) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Invoke(BMessage *msg = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ void DeselectAll();
+ |
+
+
+ |
+
+ |
+
+
+ void DeselectExcept(int32 except_from, int32 except_to);
+ |
+
+
+ |
+
+ |
+
+
+ void Deselect(int32 index);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SelectionChanged();
+ |
+
+
+ |
+
+ |
+
+
+ void SortItems(int (*cmp)(const void *, const void *));
+ |
+
+
+ |
+
+ |
+
+
+ bool SwapItems(int32 a, int32 b);
+ |
+
+
+ |
+
+ |
+
+
+ bool MoveItem(int32 from, int32 to);
+ |
+
+
+ |
+
+ |
+
+
+ bool ReplaceItem(int32 index, BListItem * item);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AttachedToWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameMoved(BPoint new_position);
+ |
+
+
+ |
+
+ |
+
+
+ BRect ItemFrame(int32 index);
+ |
+
+
+ |
+
+ |
+
+
+ virtual BHandler *ResolveSpecifier(BMessage *msg, int32 index, BMessage *specifier, int32 form, const char *property);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t GetSupportedSuites(BMessage *data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Perform(perform_code d, void *arg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void WindowActivated(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseUp(BPoint pt);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage *msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DetachedFromWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool InitiateDrag(BPoint pt, int32 itemIndex, bool initialySelected);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ResizeToPreferred();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void GetPreferredSize(float *width, float *height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllAttached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllDetached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool DoMiscellaneous(MiscCode code, MiscData * data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DrawItem(BListItem *item, BRect itemRect, bool complete = false);
+ |
+
+
+
+ | BOutlineListView Class |
+
+
+ |
+
+ |
+
+
+ BOutlineListView(BRect frame, const char* name, list_view_type type = B_SINGLE_SELECTION_LIST, uint32 resizeMask = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE);
+ |
+
+
+ |
+
+ |
+
+
+ BOutlineListView(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BOutlineListView();
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseDown(BPoint where);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void KeyDown(const char* bytes, int32 numBytes);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameMoved(BPoint new_position);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameResized(float new_width, float new_height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseUp(BPoint where);
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool AddUnder(BListItem* item, BListItem* underItem);
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool AddItem(BListItem* item);
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool AddItem(BListItem* item, int32 fullListIndex);
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool AddList(BList* newItems);
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool AddList(BList* newItems, int32 fullListIndex);
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool RemoveItem(BListItem* item);
+ |
+
+
+ |
+
+ |
+
+
+ virtual BListItem* RemoveItem(int32 fullListIndex);
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool RemoveItems(int32 fullListIndex, int32 count);
+ |
+
+
+ |
+
+ |
+
+
+ BListItem* FullListItemAt(int32 fullListIndex) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 FullListIndexOf(BPoint point) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 FullListIndexOf(BListItem* item) const;
+ |
+
+
+ |
+
+ |
+
+
+ BListItem* FullListFirstItem() const;
+ |
+
+
+ |
+
+ |
+
+
+ BListItem* FullListLastItem() const;
+ |
+
+
+ |
+
+ |
+
+
+ bool FullListHasItem(BListItem* item) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 FullListCountItems() const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 FullListCurrentSelection(int32 index = 0) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MakeEmpty();
+ |
+
+
+ |
+
+ |
+
+
+ bool FullListIsEmpty() const;
+ |
+
+
+ |
+
+ |
+
+
+ void FullListDoForEach(bool (*func)(BListItem* ));
+ |
+
+
+ |
+
+ |
+
+
+ void FullListDoForEach(bool (*func)(BListItem* , void* ), void*);
+ |
+
+
+ |
+
+ |
+
+
+ BListItem* Superitem(const BListItem* item);
+ |
+
+
+ |
+
+ |
+
+
+ void Expand(BListItem* item);
+ |
+
+
+ |
+
+ |
+
+
+ void Collapse(BListItem* item);
+ |
+
+
+ |
+
+ |
+
+
+ bool IsExpanded(int32 fullListIndex);
+ |
+
+
+ |
+
+ |
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Perform(perform_code d, void* arg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ResizeToPreferred();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MakeFocus(bool state = true);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllAttached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllDetached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DetachedFromWindow();
+ |
+
+
+ |
+
+ |
+
+
+ void FullListSortItems(int (*compareFunc)(const BListItem* , const BListItem* ));
+ |
+
+
+ |
+
+ |
+
+
+ void SortItemsUnder(BListItem* underItem, bool oneLevelOnly, int (*compareFunc)(const BListItem* , const BListItem*));
+ |
+
+
+ |
+
+ |
+
+
+ int32 CountItemsUnder(BListItem* under, bool oneLevelOnly) const;
+ |
+
+
+ |
+
+ |
+
+
+ BListItem* EachItemUnder(BListItem* underItem, bool oneLevelOnly, BListItem* (*eachFunc)(BListItem* , void* ), void* );
+ |
+
+
+ |
+
+ |
+
+
+ BListItem* ItemUnderAt(BListItem* underItem, bool oneLevelOnly, int32 index) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool DoMiscellaneous(MiscCode code, MiscData* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage* );
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ExpandOrCollapse(BListItem* underItem, bool expand);
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+ | Legend |
+
+
+
+
+
+  |
+ Functional Spec |
+
+
+  |
+ Use Cases |
+
+
+  |
+ Unit Tests |
+
+
+  |
+ Technical Spec |
+
+
+  |
+ Implementation |
+
+
+  |
+ Completed |
+
+
+ |
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
diff --git a/docs/develop/ikteam/schedule/interfacekit/MenuingSupport.html b/docs/develop/ikteam/schedule/interfacekit/MenuingSupport.html
new file mode 100644
index 0000000000..fe83ef1a58
--- /dev/null
+++ b/docs/develop/ikteam/schedule/interfacekit/MenuingSupport.html
@@ -0,0 +1,5278 @@
+
+
+ Menuing Support Tasks
+
+
+Menuing Support Tasks
+
+
+
+
+
+ |
+
+ |
+ Task Summary |
+ Owner |
+
+ |
+
+ |
+
+
+ BMenu
+ |
+
+
+ Justin Gasper
+ |
+
+
+ |
+
+ |
+
+
+ BMenuBar
+ |
+
+
+ Justin Gasper
+ |
+
+
+ |
+
+ |
+
+
+ BMenuItem
+ |
+
+
+ Justin Gasper
+ |
+
+
+ |
+
+ |
+
+
+ BSeparatorItem
+ |
+
+
+
+ |
+
+
+ |
+
+ |
+
+
+ BMenuField
+ |
+
+
+
+ |
+
+
+ |
+
+ |
+
+
+ BPopUpMenu
+ |
+
+
+
+ |
+
+
+ |
+
+ |
+
+
+ Menu Config
+ |
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+ |
+ Task Details |
+
+
+
+
+ | BMenu Class |
+
+
+ |
+
+ |
+
+
+ BMenu(const char* title, menu_layout layout = B_ITEMS_IN_COLUMN);
+ |
+
+
+ |
+
+ |
+
+
+ BMenu(const char* title, float width, float height);
+ |
+
+
+ |
+
+ |
+
+
+ BMenu(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BMenu();
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AttachedToWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DetachedFromWindow();
+ |
+
+
+ |
+
+ |
+
+
+ bool AddItem(BMenuItem* item);
+ |
+
+
+ |
+
+ |
+
+
+ bool AddItem(BMenuItem* item, int32 index);
+ |
+
+
+ |
+
+ |
+
+
+ bool AddItem(BMenuItem* item, BRect frame);
+ |
+
+
+ |
+
+ |
+
+
+ bool AddItem(BMenu* menu);
+ |
+
+
+ |
+
+ |
+
+
+ bool AddItem(BMenu* menu, int32 index);
+ |
+
+
+ |
+
+ |
+
+
+ bool AddItem(BMenu* menu, BRect frame);
+ |
+
+
+ |
+
+ |
+
+
+ bool AddList(BList* list, int32 index);
+ |
+
+
+ |
+
+ |
+
+
+ bool AddSeparatorItem();
+ |
+
+
+ |
+
+ |
+
+
+ bool RemoveItem(BMenuItem* item);
+ |
+
+
+ |
+
+ |
+
+
+ BMenuItem* RemoveItem(int32 index);
+ |
+
+
+ |
+
+ |
+
+
+ bool RemoveItems(int32 index, int32 count, bool del = false);
+ |
+
+
+ |
+
+ |
+
+
+ bool RemoveItem(BMenu* menu);
+ |
+
+
+ |
+
+ |
+
+
+ BMenuItem* ItemAt(int32 index) const;
+ |
+
+
+ |
+
+ |
+
+
+ BMenu* SubmenuAt(int32 index) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 CountItems() const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 IndexOf(BMenuItem* item) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 IndexOf(BMenu* menu) const;
+ |
+
+
+ |
+
+ |
+
+
+ BMenuItem* FindItem(uint32 command) const;
+ |
+
+
+ |
+
+ |
+
+
+ BMenuItem* FindItem(const char* name) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t SetTargetForItems(BHandler* target);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t SetTargetForItems(BMessenger messenger);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetEnabled(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetRadioMode(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetTriggersEnabled(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetMaxContentWidth(float max);
+ |
+
+
+ |
+
+ |
+
+
+ void SetLabelFromMarked(bool on);
+ |
+
+
+ |
+
+ |
+
+
+ bool IsLabelFromMarked();
+ |
+
+
+ |
+
+ |
+
+
+ bool IsEnabled() const;
+ |
+
+
+ |
+
+ |
+
+
+ bool IsRadioMode() const;
+ |
+
+
+ |
+
+ |
+
+
+ bool AreTriggersEnabled() const;
+ |
+
+
+ |
+
+ |
+
+
+ bool IsRedrawAfterSticky() const;
+ |
+
+
+ |
+
+ |
+
+
+ float MaxContentWidth() const;
+ |
+
+
+ |
+
+ |
+
+
+ BMenuItem* FindMarked();
+ |
+
+
+ |
+
+ |
+
+
+ BMenu* Supermenu() const;
+ |
+
+
+ |
+
+ |
+
+
+ BMenuItem* Superitem() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void KeyDown(const char* bytes, int32 numBytes);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Draw(BRect updateRect);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ResizeToPreferred();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameMoved(BPoint new_position);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameResized(float new_width, float new_height);
+ |
+
+
+ |
+
+ |
+
+
+ void InvalidateLayout();
+ |
+
+
+ |
+
+ |
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Perform(perform_code d, void* arg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MakeFocus(bool state = true);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllAttached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllDetached();
+ |
+
+
+ |
+
+ |
+
+
+ BMenu(BRect frame, const char* viewName, uint32 resizeMask, uint32 flags, menu_layout layout, bool resizeToFit);
+ |
+
+
+ |
+
+ |
+
+
+ virtual BPoint ScreenLocation();
+ |
+
+
+ |
+
+ |
+
+
+ void SetItemMargins(float left, float top, float right, float bottom);
+ |
+
+
+ |
+
+ |
+
+
+ void GetItemMargins(float* left, float* top, float* right,float* bottom) const;
+ |
+
+
+ |
+
+ |
+
+
+ menu_layout Layout() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Show();
+ |
+
+
+ |
+
+ |
+
+
+ void Show(bool selectFirstItem);
+ |
+
+
+ |
+
+ |
+
+
+ void Hide();
+ |
+
+
+ |
+
+ |
+
+
+ BMenuItem* Track(bool start_opened = false, BRect* special_rect = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool AddDynamicItem(add_state s);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DrawBackground(BRect update);
+ |
+
+
+ |
+
+ |
+
+
+ void SetTrackingHook(menu_tracking_hook func, void* state);
+ |
+
+
+
+ | BMenuBar Class |
+
+
+ |
+
+ |
+
+
+ BMenuBar(BRect frame, const char* title, uint32 resizeMask = B_FOLLOW_LEFT_RIGHT | B_FOLLOW_TOP, menu_layout layout = B_ITEMS_IN_ROW, bool resizeToFit = true);
+ |
+
+
+ |
+
+ |
+
+
+ BMenuBar(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BMenuBar();
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetBorder(menu_bar_border border);
+ |
+
+
+ |
+
+ |
+
+
+ menu_bar_border Border() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Draw(BRect updateRect);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AttachedToWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DetachedFromWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseDown(BPoint where);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void WindowActivated(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseUp(BPoint where);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameMoved(BPoint new_position);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameResized(float new_width, float new_height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Show();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Hide();
+ |
+
+
+ |
+
+ |
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ResizeToPreferred();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MakeFocus(bool state = true);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllAttached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllDetached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Perform(perform_code d, void* arg);
+ |
+
+
+
+ | BMenuItem Class |
+
+
+ |
+
+ |
+
+
+ BMenuItem(const char* label, BMessage* message, char shortcut = 0, uint32 modifiers = 0);
+ |
+
+
+ |
+
+ |
+
+
+ BMenuItem(BMenu* menu, BMessage* message = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ BMenuItem(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BMenuItem();
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetLabel(const char* name);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetEnabled(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetMarked(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetTrigger(char ch);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetShortcut(char ch, uint32 modifiers);
+ |
+
+
+ |
+
+ |
+
+
+ const char* Label() const;
+ |
+
+
+ |
+
+ |
+
+
+ bool IsEnabled() const;
+ |
+
+
+ |
+
+ |
+
+
+ bool IsMarked() const;
+ |
+
+
+ |
+
+ |
+
+
+ char Trigger() const;
+ |
+
+
+ |
+
+ |
+
+
+ char Shortcut(uint32* modifiers = NULL) const;
+ |
+
+
+ |
+
+ |
+
+
+ BMenu* Submenu() const;
+ |
+
+
+ |
+
+ |
+
+
+ BMenu* Menu() const;
+ |
+
+
+ |
+
+ |
+
+
+ BRect Frame() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void GetContentSize(float* width, float* height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void TruncateLabel(float max, char* new_label);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DrawContent();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Draw();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Highlight(bool on);
+ |
+
+
+ |
+
+ |
+
+
+ bool IsSelected() const;
+ |
+
+
+ |
+
+ |
+
+
+ BPoint ContentLocation() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Invoke(BMessage* msg = NULL);
+ |
+
+
+
+ | BSeparatorItem Class |
+
+
+ |
+
+ |
+
+
+ BSeparatorItem();
+ |
+
+
+ |
+
+ |
+
+
+ BSeparatorItem(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BSeparatorItem();
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetEnabled(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void GetContentSize(float* width, float* height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Draw();
+ |
+
+
+
+ | BMenuField Class |
+
+
+ |
+
+ |
+
+
+ BMenuField(BRect frame, const char* name, const char* label, BMenu* menu, uint32 resize = B_FOLLOW_LEFT|B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW | B_NAVIGABLE);
+ |
+
+
+ |
+
+ |
+
+
+ BMenuField(BRect frame, const char* name, const char* label, BMenu* menu, bool fixed_size, uint32 resize = B_FOLLOW_LEFT|B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW | B_NAVIGABLE);
+ |
+
+
+ |
+
+ |
+
+
+ BMenuField(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BMenuField();
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Draw(BRect update);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AttachedToWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllAttached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseDown(BPoint where);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void KeyDown(const char* bytes, int32 numBytes);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MakeFocus(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void WindowActivated(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseUp(BPoint pt);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DetachedFromWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllDetached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameMoved(BPoint new_position);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameResized(float new_width, float new_height);
+ |
+
+
+ |
+
+ |
+
+
+ BMenu* Menu() const;
+ |
+
+
+ |
+
+ |
+
+
+ BMenuBar* MenuBar() const;
+ |
+
+
+ |
+
+ |
+
+
+ BMenuItem* MenuItem() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetLabel(const char* label);
+ |
+
+
+ |
+
+ |
+
+
+ const char* Label() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetEnabled(bool on);
+ |
+
+
+ |
+
+ |
+
+
+ bool IsEnabled() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetAlignment(alignment label);
+ |
+
+
+ |
+
+ |
+
+
+ alignment Alignment() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetDivider(float dividing_line);
+ |
+
+
+ |
+
+ |
+
+
+ float Divider() const;
+ |
+
+
+ |
+
+ |
+
+
+ void ShowPopUpMarker();
+ |
+
+
+ |
+
+ |
+
+
+ void HidePopUpMarker();
+ |
+
+
+ |
+
+ |
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ResizeToPreferred();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Perform(perform_code d, void* arg);
+ |
+
+
+
+ | BPopUpMenu Class |
+
+
+ |
+
+ |
+
+
+ BPopUpMenu(const char* title, bool radioMode = true, bool autoRename = true, menu_layout layout = B_ITEMS_IN_COLUMN);
+ |
+
+
+ |
+
+ |
+
+
+ BPopUpMenu(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BPopUpMenu();
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ BMenuItem* Go(BPoint where, bool delivers_message = false, bool open_anyway = false, bool async = false);
+ |
+
+
+ |
+
+ |
+
+
+ BMenuItem* Go(BPoint where, bool delivers_message, bool open_anyway, BRect click_to_open, bool async = false);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseDown(BPoint pt);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseUp(BPoint pt);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AttachedToWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DetachedFromWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameMoved(BPoint new_position);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameResized(float new_width, float new_height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Perform(perform_code d, void* arg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ResizeToPreferred();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MakeFocus(bool state = true);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllAttached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllDetached();
+ |
+
+
+ |
+
+ |
+
+
+ void SetAsyncAutoDestruct(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ bool AsyncAutoDestruct() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual BPoint ScreenLocation();
+ |
+
+
+
+ | Menu Config Functions |
+
+
+ |
+
+ |
+
+
+ status_t set_menu_info(menu_info* info);
+ |
+
+
+ |
+
+ |
+
+
+ status_t get_menu_info(menu_info* info);
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+ | Legend |
+
+
+
+
+
+  |
+ Functional Spec |
+
+
+  |
+ Use Cases |
+
+
+  |
+ Unit Tests |
+
+
+  |
+ Technical Spec |
+
+
+  |
+ Implementation |
+
+
+  |
+ Completed |
+
+
+ |
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
diff --git a/docs/develop/ikteam/schedule/interfacekit/Miscellaneous.html b/docs/develop/ikteam/schedule/interfacekit/Miscellaneous.html
new file mode 100644
index 0000000000..d5c9e07e14
--- /dev/null
+++ b/docs/develop/ikteam/schedule/interfacekit/Miscellaneous.html
@@ -0,0 +1,2519 @@
+
+
+ Miscellaneous Tasks
+
+
+Miscellaneous Tasks
+
+
+
+
+
+ |
+
+ |
+ Task Summary |
+ Owner |
+
+ |
+
+ |
+
+
+ BAlert
+ |
+
+
+ Erik Jaesler
+ |
+
+
+ |
+
+ |
+
+
+ BDeskbar
+ |
+
+
+ Jeremy Rand
+ |
+
+
+ |
+
+ |
+
+
+ unicode_block
+ |
+
+
+
+ |
+
+
+ |
+
+ |
+
+
+ Deskbar Support
+ |
+
+
+
+ |
+
+
+ |
+
+ |
+
+
+ Mouse Config
+ |
+
+
+
+ |
+
+
+ |
+
+ |
+
+
+ Workspace Support
+ |
+
+
+
+ |
+
+
+ |
+
+ |
+
+
+ Keyboard Config
+ |
+
+
+
+ |
+
+
+ |
+
+ |
+
+
+ UI Color Info
+ |
+
+
+
+ |
+
+
+ |
+
+ |
+
+
+ Miscellaneous
+ |
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+ |
+ Task Details |
+
+
+
+
+ | BAlert Class |
+
+
+ |
+
+ |
+
+
+ BAlert(const char *title, const char *text, const char *button1, const char *button2 = NULL, const char *button3 = NULL, button_width width = B_WIDTH_AS_USUAL, alert_type type = B_INFO_ALERT);
+ |
+
+
+ |
+
+ |
+
+
+ BAlert(const char *title, const char *text, const char *button1, const char *button2, const char *button3, button_width width, button_spacing spacing, alert_type type = B_INFO_ALERT);
+ |
+
+
+ |
+
+ |
+
+
+ BAlert(BMessage *data);
+ |
+
+
+ |
+
+ |
+
+
+ ~BAlert();
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable *Instantiate(BMessage *data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage *data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetShortcut(int32 button_index, char key);
+ |
+
+
+ |
+
+ |
+
+
+ char Shortcut(int32 button_index) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 Go();
+ |
+
+
+ |
+
+ |
+
+
+ status_t Go(BInvoker *invoker);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage *an_event);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameResized(float new_width, float new_height);
+ |
+
+
+ |
+
+ |
+
+
+ BButton* ButtonAt(int32 index) const;
+ |
+
+
+ |
+
+ |
+
+
+ BTextView* TextView() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual BHandler* ResolveSpecifier(BMessage *msg, int32 index, BMessage* specifier, int32 form, const char* property);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DispatchMessage(BMessage* msg, BHandler* handler);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Quit();
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool QuitRequested();
+ |
+
+
+ |
+
+ |
+
+
+ static BPoint AlertPosition(float width, float height);
+ |
+
+
+
+ | BDeskbar Class |
+
+
+ |
+
+ |
+
+
+ BDeskbar();
+ |
+
+
+ |
+
+ |
+
+
+ ~BDeskbar();
+ |
+
+
+ |
+
+ |
+
+
+ BRect Frame() const;
+ |
+
+
+ |
+
+ |
+
+
+ deskbar_location Location(bool* isExpanded=NULL) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t SetLocation(deskbar_location location, bool expanded=false);
+ |
+
+
+ |
+
+ |
+
+
+ bool IsExpanded() const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t Expand(bool yn);
+ |
+
+
+ |
+
+ |
+
+
+ status_t GetItemInfo(int32 id, const char** name) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t GetItemInfo(const char* name, int32* id) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool HasItem(int32 id) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool HasItem(const char* name) const;
+ |
+
+
+ |
+
+ |
+
+
+ uint32 CountItems() const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t AddItem(BView* archivableView, int32* id=NULL);
+ |
+
+
+ |
+
+ |
+
+
+ status_t AddItem(entry_ref* addon, int32* id=NULL);
+ |
+
+
+ |
+
+ |
+
+
+ status_t RemoveItem(int32 id);
+ |
+
+
+ |
+
+ |
+
+
+ status_t RemoveItem(const char* name);
+ |
+
+
+
+ | unicode_block Class |
+
+
+ |
+
+ |
+
+
+ unicode_block();
+ |
+
+
+ |
+
+ |
+
+
+ unicode_block(uint64 block2, uint64 block1);
+ |
+
+
+ |
+
+ |
+
+
+ bool Includes(const unicode_block &block) const;
+ |
+
+
+ |
+
+ |
+
+
+ unicode_block operator&(const unicode_block &block) const;
+ |
+
+
+ |
+
+ |
+
+
+ unicode_block operator|(const unicode_block &block) const;
+ |
+
+
+ |
+
+ |
+
+
+ unicode_block& operator=(const unicode_block &block);
+ |
+
+
+ |
+
+ |
+
+
+ bool operator==(const unicode_block &block) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool operator!=(const unicode_block &block) const;
+ |
+
+
+
+ | Deskbar Support Functions |
+
+
+ |
+
+ |
+
+
+ status_t get_deskbar_frame(BRect* frame);
+ |
+
+
+
+ | Mouse Config Functions |
+
+
+ |
+
+ |
+
+
+ status_t get_mouse_type(int32* type);
+ |
+
+
+ |
+
+ |
+
+
+ status_t set_mouse_type(int32 type);
+ |
+
+
+ |
+
+ |
+
+
+ status_t get_mouse_map(mouse_map* map);
+ |
+
+
+ |
+
+ |
+
+
+ status_t set_mouse_map(mouse_map* map);
+ |
+
+
+ |
+
+ |
+
+
+ status_t get_click_speed(bigtime_t* speed);
+ |
+
+
+ |
+
+ |
+
+
+ status_t set_click_speed(bigtime_t speed);
+ |
+
+
+ |
+
+ |
+
+
+ status_t get_mouse_speed(int32* speed);
+ |
+
+
+ |
+
+ |
+
+
+ status_t set_mouse_speed(int32 speed);
+ |
+
+
+ |
+
+ |
+
+
+ status_t get_mouse_acceleration(int32* speed);
+ |
+
+
+ |
+
+ |
+
+
+ status_t set_mouse_acceleration(int32 speed);
+ |
+
+
+ |
+
+ |
+
+
+ void set_focus_follows_mouse(bool follow);
+ |
+
+
+ |
+
+ |
+
+
+ bool focus_follows_mouse();
+ |
+
+
+ |
+
+ |
+
+
+ void set_mouse_mode(mode_mouse mode);
+ |
+
+
+ |
+
+ |
+
+
+ mode_mouse mouse_mode();
+ |
+
+
+
+ | Workspace Support Functions |
+
+
+ |
+
+ |
+
+
+ int32 count_workspaces();
+ |
+
+
+ |
+
+ |
+
+
+ void set_workspace_count(int32 count);
+ |
+
+
+ |
+
+ |
+
+
+ int32 current_workspace();
+ |
+
+
+ |
+
+ |
+
+
+ void activate_workspace(int32 workspace);
+ |
+
+
+
+ | Keyboard Config Functions |
+
+
+ |
+
+ |
+
+
+ status_t get_key_repeat_rate(int32* rate);
+ |
+
+
+ |
+
+ |
+
+
+ status_t set_key_repeat_rate(int32 rate);
+ |
+
+
+ |
+
+ |
+
+
+ status_t get_key_repeat_delay(bigtime_t* delay);
+ |
+
+
+ |
+
+ |
+
+
+ status_t set_key_repeat_delay(bigtime_t delay);
+ |
+
+
+ |
+
+ |
+
+
+ uint32 modifiers();
+ |
+
+
+ |
+
+ |
+
+
+ status_t get_key_info(key_info* info);
+ |
+
+
+ |
+
+ |
+
+
+ void get_key_map(key_map** map, char** key_buffer);
+ |
+
+
+ |
+
+ |
+
+
+ status_t get_keyboard_id(uint16* id);
+ |
+
+
+ |
+
+ |
+
+
+ void set_modifier_key(uint32 modifier, uint32 key);
+ |
+
+
+ |
+
+ |
+
+
+ void set_keyboard_locks(uint32 modifiers);
+ |
+
+
+
+ | UI Color Info Functions |
+
+
+ |
+
+ |
+
+
+ rgb_color keyboard_navigation_color();
+ |
+
+
+ |
+
+ |
+
+
+ rgb_color ui_color(color_which which);
+ |
+
+
+ |
+
+ |
+
+
+ rgb_color tint_color(rgb_color color, float tint);
+ |
+
+
+
+ | Miscellaneous Functions |
+
+
+ |
+
+ |
+
+
+ bigtime_t idle_time();
+ |
+
+
+ |
+
+ |
+
+
+ void run_select_printer_panel();
+ |
+
+
+ |
+
+ |
+
+
+ void run_add_printer_panel();
+ |
+
+
+ |
+
+ |
+
+
+ void run_be_about();
+ |
+
+
+ |
+
+ |
+
+
+ status_t _init_interface_kit_();
+ |
+
+
+ |
+
+ |
+
+
+ void _ReservedShelf1__6BShelfFv(BShelf* const, int32, const BMessage*, const BView*);
+ |
+
+
+ |
+
+ |
+
+
+ uint32 _rule_(uint32 r1, uint32 r2, uint32 r3, uint32 r4);
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+ | Legend |
+
+
+
+
+
+  |
+ Functional Spec |
+
+
+  |
+ Use Cases |
+
+
+  |
+ Unit Tests |
+
+
+  |
+ Technical Spec |
+
+
+  |
+ Implementation |
+
+
+  |
+ Completed |
+
+
+ |
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
diff --git a/docs/develop/ikteam/schedule/interfacekit/Non-ControlWidgets.html b/docs/develop/ikteam/schedule/interfacekit/Non-ControlWidgets.html
new file mode 100644
index 0000000000..e9575867cf
--- /dev/null
+++ b/docs/develop/ikteam/schedule/interfacekit/Non-ControlWidgets.html
@@ -0,0 +1,2496 @@
+
+
+ Non-Control Widgets Tasks
+
+
+Non-Control Widgets Tasks
+
+
+
+
+
+ |
+
+ |
+ Task Summary |
+ Owner |
+
+ |
+
+ |
+
+
+ BBox
+ |
+
+
+ Marc Flerackers
+ |
+
+
+ |
+
+ |
+
+
+ BStringView
+ |
+
+
+
+ |
+
+
+ |
+
+ |
+
+
+ BStatusBar
+ |
+
+
+ Marc Flerackers
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+ |
+ Task Details |
+
+
+
+
+ | BBox Class |
+
+
+ |
+
+ |
+
+
+ BBox(BRect bounds, const char* name = NULL, uint32 resizeFlags = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE_JUMP, border_style border = B_FANCY_BORDER);
+ |
+
+
+ |
+
+ |
+
+
+ BBox(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BBox(void);
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetBorder(border_style style);
+ |
+
+
+ |
+
+ |
+
+
+ border_style Border() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetLabel(const char* label);
+ |
+
+
+ |
+
+ |
+
+
+ status_t SetLabel(BView* view_label);
+ |
+
+
+ |
+
+ |
+
+
+ const char* Label() const;
+ |
+
+
+ |
+
+ |
+
+
+ BView* LabelView() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Draw(BRect bounds);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AttachedToWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DetachedFromWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllAttached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllDetached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameResized(float new_width, float new_height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseDown(BPoint pt);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseUp(BPoint pt);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void WindowActivated(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameMoved(BPoint new_position);
+ |
+
+
+ |
+
+ |
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ResizeToPreferred();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MakeFocus(bool state = true);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+ |
+
+
+
+ | BStringView Class |
+
+
+ |
+
+ |
+
+
+ BStringView(BRect bounds, const char* name, const char* text, uint32 resizeFlags = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW);
+ |
+
+
+ |
+
+ |
+
+
+ BStringView(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BStringView();
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetText(const char* text);
+ |
+
+
+ |
+
+ |
+
+
+ const char* Text() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetAlignment(alignment flag);
+ |
+
+
+ |
+
+ |
+
+
+ alignment Alignment() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AttachedToWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Draw(BRect bounds);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseDown(BPoint pt);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseUp(BPoint pt);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DetachedFromWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameMoved(BPoint new_position);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameResized(float new_width, float new_height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ResizeToPreferred();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MakeFocus(bool state = true);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllAttached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllDetached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+ |
+
+
+
+ | BStatusBar Class |
+
+
+ |
+
+ |
+
+
+ BStatusBar(BRect frame, const char* name, const char* label = NULL, const char* trailing_label = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ BStatusBar(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BStatusBar();
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AttachedToWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Draw(BRect updateRect);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetBarColor(rgb_color color);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetBarHeight(float height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetText(const char* str);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetTrailingText(const char* str);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetMaxValue(float max);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Update(float delta, const char* main_text = NULL, const char* trailing_text = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Reset(const char* label = NULL, const char* trailing_label = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ float CurrentValue() const;
+ |
+
+
+ |
+
+ |
+
+
+ float MaxValue() const;
+ |
+
+
+ |
+
+ |
+
+
+ rgb_color BarColor() const;
+ |
+
+
+ |
+
+ |
+
+
+ float BarHeight() const;
+ |
+
+
+ |
+
+ |
+
+
+ const char* Text() const;
+ |
+
+
+ |
+
+ |
+
+
+ const char* TrailingText() const;
+ |
+
+
+ |
+
+ |
+
+
+ const char* Label() const;
+ |
+
+
+ |
+
+ |
+
+
+ const char* TrailingLabel() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseDown(BPoint pt);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseUp(BPoint pt);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void WindowActivated(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DetachedFromWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameMoved(BPoint new_position);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameResized(float new_width, float new_height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ResizeToPreferred();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MakeFocus(bool state = true);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllAttached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllDetached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+ | Legend |
+
+
+
+
+
+  |
+ Functional Spec |
+
+
+  |
+ Use Cases |
+
+
+  |
+ Unit Tests |
+
+
+  |
+ Technical Spec |
+
+
+  |
+ Implementation |
+
+
+  |
+ Completed |
+
+
+ |
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
diff --git a/docs/develop/ikteam/schedule/interfacekit/ReplicantSupport.html b/docs/develop/ikteam/schedule/interfacekit/ReplicantSupport.html
new file mode 100644
index 0000000000..5b22b10cd2
--- /dev/null
+++ b/docs/develop/ikteam/schedule/interfacekit/ReplicantSupport.html
@@ -0,0 +1,1938 @@
+
+
+ Replicant Support Tasks
+
+
+Replicant Support Tasks
+
+
+
+
+
+ |
+
+ |
+ Task Summary |
+ Owner |
+
+ |
+
+ |
+
+
+ BDragger
+ |
+
+
+
+ |
+
+
+ |
+
+ |
+
+
+ BShelf
+ |
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+ |
+ Task Details |
+
+
+
+
+ | BDragger Class |
+
+
+ |
+
+ |
+
+
+ BDragger(BRect bounds, BView* target, uint32 rmask = B_FOLLOW_NONE, uint32 flags = B_WILL_DRAW);
+ |
+
+
+ |
+
+ |
+
+
+ BDragger(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BDragger();
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AttachedToWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DetachedFromWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Draw(BRect update);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseDown(BPoint where);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseUp(BPoint pt);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameMoved(BPoint new_position);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameResized(float new_width, float new_height);
+ |
+
+
+ |
+
+ |
+
+
+ static status_t ShowAllDraggers(); /* system wide!*/
+ |
+
+
+ |
+
+ |
+
+
+ static status_t HideAllDraggers(); /* system wide!*/
+ |
+
+
+ |
+
+ |
+
+
+ static bool AreDraggersDrawn();
+ |
+
+
+ |
+
+ |
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Perform(perform_code d, void* arg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ResizeToPreferred();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MakeFocus(bool state = true);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllAttached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllDetached();
+ |
+
+
+ |
+
+ |
+
+
+ status_t SetPopUp(BPopUpMenu* context_menu);
+ |
+
+
+ |
+
+ |
+
+
+ BPopUpMenu* PopUp() const;
+ |
+
+
+ |
+
+ |
+
+
+ bool InShelf() const;
+ |
+
+
+ |
+
+ |
+
+
+ BView* Target() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual BBitmap* DragBitmap(BPoint* offset, drawing_mode* mode);
+ |
+
+
+ |
+
+ |
+
+
+ bool IsVisibilityChanging() const;
+ |
+
+
+
+ | BShelf Class |
+
+
+ |
+
+ |
+
+
+ BShelf(BView* view, bool allow_drags = true, const char* shelf_type = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ BShelf(const entry_ref* ref, BView* view, bool allow_drags = true, const char* shelf_type = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ BShelf(BDataIO* stream, BView* view, bool allow_drags = true, const char* shelf_type = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ BShelf(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BShelf();
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ status_t Save();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetDirty(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ bool IsDirty() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Perform(perform_code d, void* arg);
+ |
+
+
+ |
+
+ |
+
+
+ bool AllowsDragging() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetAllowsDragging(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ bool AllowsZombies() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetAllowsZombies(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ bool DisplaysZombies() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetDisplaysZombies(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ bool IsTypeEnforced() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetTypeEnforced(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ status_t SetSaveLocation(BDataIO* data_io);
+ |
+
+
+ |
+
+ |
+
+
+ status_t SetSaveLocation(const entry_ref* ref);
+ |
+
+
+ |
+
+ |
+
+
+ BDataIO* SaveLocation(entry_ref* ref) const;
+ |
+
+
+ |
+
+ |
+
+
+ status_t AddReplicant(BMessage* data, BPoint location);
+ |
+
+
+ |
+
+ |
+
+
+ status_t DeleteReplicant(BView* replicant);
+ |
+
+
+ |
+
+ |
+
+
+ status_t DeleteReplicant(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ status_t DeleteReplicant(int32 index);
+ |
+
+
+ |
+
+ |
+
+
+ int32 CountReplicants() const;
+ |
+
+
+ |
+
+ |
+
+
+ BMessage* ReplicantAt(int32 index, BView** view = NULL, uint32* uid = NULL, status_t* perr = NULL) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 IndexOf(const BView* replicant_view) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 IndexOf(const BMessage* archive) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 IndexOf(uint32 id) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool CanAcceptReplicantMessage(BMessage*) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool CanAcceptReplicantView(BRect, BView*, BMessage*) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual BPoint AdjustReplicantBy(BRect, BMessage*) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ReplicantDeleted(int32 index, const BMessage* archive, const BView* replicant);
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+ | Legend |
+
+
+
+
+
+  |
+ Functional Spec |
+
+
+  |
+ Use Cases |
+
+
+  |
+ Unit Tests |
+
+
+  |
+ Technical Spec |
+
+
+  |
+ Implementation |
+
+
+  |
+ Completed |
+
+
+ |
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
diff --git a/docs/develop/ikteam/schedule/interfacekit/ScrollingSupport.html b/docs/develop/ikteam/schedule/interfacekit/ScrollingSupport.html
new file mode 100644
index 0000000000..2c875367ff
--- /dev/null
+++ b/docs/develop/ikteam/schedule/interfacekit/ScrollingSupport.html
@@ -0,0 +1,1871 @@
+
+
+ Scrolling Support Tasks
+
+
+Scrolling Support Tasks
+
+
+
+
+
+ |
+
+ |
+ Task Summary |
+ Owner |
+
+ |
+
+ |
+
+
+ BScrollBar
+ |
+
+
+
+ |
+
+
+ |
+
+ |
+
+
+ BScrollView
+ |
+
+
+
+ |
+
+
+ |
+
+ |
+
+
+ Scrollbar Config
+ |
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+ |
+ Task Details |
+
+
+
+
+ | BScrollBar Class |
+
+
+ |
+
+ |
+
+
+ BScrollBar(BRect frame, const char* name, BView* target, float min, float max, orientation direction);
+ |
+
+
+ |
+
+ |
+
+
+ BScrollBar(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BScrollBar();
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AttachedToWindow();
+ |
+
+
+ |
+
+ |
+
+
+ void SetValue(float value);
+ |
+
+
+ |
+
+ |
+
+
+ float Value() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetProportion(float);
+ |
+
+
+ |
+
+ |
+
+
+ float Proportion() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ValueChanged(float newValue);
+ |
+
+
+ |
+
+ |
+
+
+ void SetRange(float min, float max);
+ |
+
+
+ |
+
+ |
+
+
+ void GetRange(float* min, float* max) const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetSteps(float smallStep, float largeStep);
+ |
+
+
+ |
+
+ |
+
+
+ void GetSteps(float* smallStep, float* largeStep) const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetTarget(BView* target);
+ |
+
+
+ |
+
+ |
+
+
+ void SetTarget(const char* targetName);
+ |
+
+
+ |
+
+ |
+
+
+ BView* Target() const;
+ |
+
+
+ |
+
+ |
+
+
+ orientation Orientation() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseDown(BPoint pt);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseUp(BPoint pt);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DetachedFromWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Draw(BRect updateRect);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameMoved(BPoint new_position);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameResized(float new_width, float new_height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ResizeToPreferred();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MakeFocus(bool state = true);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllAttached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllDetached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+ |
+
+
+
+ | BScrollView Class |
+
+
+ |
+
+ |
+
+
+ BScrollView(const char* name, BView* target, uint32 resizeMask = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = 0, bool horizontal = false, bool vertical = false, border_style border = B_FANCY_BORDER);
+ |
+
+
+ |
+
+ |
+
+
+ BScrollView(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BScrollView();
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Draw(BRect updateRect);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AttachedToWindow();
+ |
+
+
+ |
+
+ |
+
+
+ BScrollBar* ScrollBar(orientation flag) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetBorder(border_style border);
+ |
+
+
+ |
+
+ |
+
+
+ border_style Border() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t SetBorderHighlighted(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ bool IsBorderHighlighted() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetTarget(BView* new_target);
+ |
+
+
+ |
+
+ |
+
+
+ BView* Target() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseDown(BPoint pt);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void WindowActivated(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseUp(BPoint pt);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DetachedFromWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllAttached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllDetached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameMoved(BPoint new_position);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameResized(float new_width, float new_height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ResizeToPreferred();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MakeFocus(bool state = true);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+ |
+
+
+
+ | Scrollbar Config Functions |
+
+
+ |
+
+ |
+
+
+ status_t get_scroll_bar_info(scroll_bar_info* info);
+ |
+
+
+ |
+
+ |
+
+
+ status_t set_scroll_bar_info(scroll_bar_info* info);
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+ | Legend |
+
+
+
+
+
+  |
+ Functional Spec |
+
+
+  |
+ Use Cases |
+
+
+  |
+ Unit Tests |
+
+
+  |
+ Technical Spec |
+
+
+  |
+ Implementation |
+
+
+  |
+ Completed |
+
+
+ |
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
diff --git a/docs/develop/ikteam/schedule/interfacekit/TextViewSupport.html b/docs/develop/ikteam/schedule/interfacekit/TextViewSupport.html
new file mode 100644
index 0000000000..342cbae98f
--- /dev/null
+++ b/docs/develop/ikteam/schedule/interfacekit/TextViewSupport.html
@@ -0,0 +1,3688 @@
+
+
+ TextView Support Tasks
+
+
+TextView Support Tasks
+
+
+
+
+
+ |
+
+ |
+ Task Summary |
+ Owner |
+
+ |
+
+ |
+
+
+ BTextView
+ |
+
+
+
+ |
+
+
+ |
+
+ |
+
+
+ BTextControl
+ |
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+ |
+ Task Details |
+
+
+
+
+ | BTextView Class |
+
+
+ |
+
+ |
+
+
+ BTextView(BRect frame, const char* name, BRect textRect, uint32 resizeMask, uint32 flags = B_WILL_DRAW | B_PULSE_NEEDED);
+ |
+
+
+ |
+
+ |
+
+
+ BTextView(BRect frame, const char* name, BRect textRect, const BFont* initialFont, const rgb_color* initialColor, uint32 resizeMask, uint32 flags);
+ |
+
+
+ |
+
+ |
+
+
+ BTextView(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BTextView();
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AttachedToWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DetachedFromWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Draw(BRect inRect);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseDown(BPoint where);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseUp(BPoint where);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseMoved(BPoint where, uint32 code, const BMessage* message);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void WindowActivated(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void KeyDown(const char* bytes, int32 numBytes);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Pulse();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameResized(float width, float height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MakeFocus(bool focusState = true);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage* message);
+ |
+
+
+ |
+
+ |
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* message, int32 index, BMessage* specifier, int32 form, const char* property);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Perform(perform_code d, void* arg);
+ |
+
+
+ |
+
+ |
+
+
+ void SetText(const char* inText, const text_run_array* inRuns = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ void SetText(const char* inText, int32 inLength, const text_run_array* inRuns = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ void SetText(BFile* inFile, int32 startOffset, int32 inLength, const text_run_array* inRuns = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ void Insert(const char* inText, const text_run_array* inRuns = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ void Insert(const char* inText, int32 inLength, const text_run_array* inRuns = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ void Insert(int32 startOffset, const char* inText, int32 inLength, const text_run_array* inRuns = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ void Delete();
+ |
+
+
+ |
+
+ |
+
+
+ void Delete(int32 startOffset, int32 endOffset);
+ |
+
+
+ |
+
+ |
+
+
+ const char* Text() const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 TextLength() const;
+ |
+
+
+ |
+
+ |
+
+
+ void GetText(int32 offset, int32 length, char* buffer) const;
+ |
+
+
+ |
+
+ |
+
+
+ uchar ByteAt(int32 offset) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 CountLines() const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 CurrentLine() const;
+ |
+
+
+ |
+
+ |
+
+
+ void GoToLine(int32 lineNum);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Cut(BClipboard* clipboard);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Copy(BClipboard* clipboard);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Paste(BClipboard* clipboard);
+ |
+
+
+ |
+
+ |
+
+
+ void Clear();
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool AcceptsPaste(BClipboard* clipboard);
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool AcceptsDrop(const BMessage* inMessage);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Select(int32 startOffset, int32 endOffset);
+ |
+
+
+ |
+
+ |
+
+
+ void SelectAll();
+ |
+
+
+ |
+
+ |
+
+
+ void GetSelection(int32* outStart, int32* outEnd) const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetFontAndColor(const BFont* inFont, uint32 inMode = B_FONT_ALL, const rgb_color* inColor = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ void SetFontAndColor(int32 startOffset, int32 endOffset, const BFont* inFont, uint32 inMode = B_FONT_ALL, const rgb_color* inColor = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ void GetFontAndColor(int32 inOffset, BFont* outFont, rgb_color* outColor = NULL) const;
+ |
+
+
+ |
+
+ |
+
+
+ void GetFontAndColor(BFont* outFont, uint32* outMode, rgb_color* outColor = NULL, bool* outEqColor = NULL) const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetRunArray(int32 startOffset, int32 endOffset, const text_run_array* inRuns);
+ |
+
+
+ |
+
+ |
+
+
+ text_run_array* RunArray(int32 startOffset, int32 endOffset, int32* outSize = NULL) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 LineAt(int32 offset) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 LineAt(BPoint point) const;
+ |
+
+
+ |
+
+ |
+
+
+ BPoint PointAt(int32 inOffset, float* outHeight = NULL) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 OffsetAt(BPoint point) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 OffsetAt(int32 line) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FindWord(int32 inOffset, int32* outFromOffset, int32* outToOffset);
+ |
+
+
+ |
+
+ |
+
+
+ virtual bool CanEndLine(int32 offset);
+ |
+
+
+ |
+
+ |
+
+
+ float LineWidth(int32 lineNum = 0) const;
+ |
+
+
+ |
+
+ |
+
+
+ float LineHeight(int32 lineNum = 0) const;
+ |
+
+
+ |
+
+ |
+
+
+ float TextHeight(int32 startLine, int32 endLine) const;
+ |
+
+
+ |
+
+ |
+
+
+ void GetTextRegion(int32 startOffset, int32 endOffset, BRegion* outRegion) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ScrollToOffset(int32 inOffset);
+ |
+
+
+ |
+
+ |
+
+
+ void ScrollToSelection();
+ |
+
+
+ |
+
+ |
+
+
+ void Highlight(int32 startOffset, int32 endOffset);
+ |
+
+
+ |
+
+ |
+
+
+ void SetTextRect(BRect rect);
+ |
+
+
+ |
+
+ |
+
+
+ BRect TextRect() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetStylable(bool stylable);
+ |
+
+
+ |
+
+ |
+
+
+ bool IsStylable() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetTabWidth(float width);
+ |
+
+
+ |
+
+ |
+
+
+ float TabWidth() const;
+ |
+
+
+ |
+
+ |
+
+
+ void MakeSelectable(bool selectable = true);
+ |
+
+
+ |
+
+ |
+
+
+ bool IsSelectable() const;
+ |
+
+
+ |
+
+ |
+
+
+ void MakeEditable(bool editable = true);
+ |
+
+
+ |
+
+ |
+
+
+ bool IsEditable() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetWordWrap(bool wrap);
+ |
+
+
+ |
+
+ |
+
+
+ bool DoesWordWrap() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetMaxBytes(int32 max);
+ |
+
+
+ |
+
+ |
+
+
+ int32 MaxBytes() const;
+ |
+
+
+ |
+
+ |
+
+
+ void DisallowChar(uint32 aChar);
+ |
+
+
+ |
+
+ |
+
+
+ void AllowChar(uint32 aChar);
+ |
+
+
+ |
+
+ |
+
+
+ void SetAlignment(alignment flag);
+ |
+
+
+ |
+
+ |
+
+
+ alignment Alignment() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetAutoindent(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ bool DoesAutoindent() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetColorSpace(color_space colors);
+ |
+
+
+ |
+
+ |
+
+
+ color_space ColorSpace() const;
+ |
+
+
+ |
+
+ |
+
+
+ void MakeResizable(bool resize, BView* resizeView = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ bool IsResizable() const;
+ |
+
+
+ |
+
+ |
+
+
+ void SetDoesUndo(bool undo);
+ |
+
+
+ |
+
+ |
+
+
+ bool DoesUndo() const;
+ |
+
+
+ |
+
+ |
+
+
+ void HideTyping(bool enabled);
+ |
+
+
+ |
+
+ |
+
+
+ bool IsTypingHidden(void) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ResizeToPreferred();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllAttached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllDetached();
+ |
+
+
+ |
+
+ |
+
+
+ static void* FlattenRunArray(const text_run_array* inArray, int32* outSize = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ static text_run_array* UnflattenRunArray(const void *data, int32* outSize = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void InsertText(const char* inText, int32 inLength, int32 inOffset, const text_run_array* inRuns);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DeleteText(int32 fromOffset, int32 toOffset);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Undo(BClipboard* clipboard);
+ |
+
+
+ |
+
+ |
+
+
+ undo_state UndoState(bool* isRedo) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void GetDragParameters(BMessage* drag, BBitmap** bitmap, BPoint* point, BHandler** handler);
+ |
+
+
+
+ | BTextControl Class |
+
+
+ |
+
+ |
+
+
+ BTextControl(BRect frame, const char* name, const char* label, const char* initial_text, BMessage* message, uint32 rmask = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_WILL_DRAW | B_NAVIGABLE);
+ |
+
+
+ |
+
+ |
+
+
+ BTextControl(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BTextControl();
+ |
+
+
+ |
+
+ |
+
+
+ static BArchivable* Instantiate(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetText(const char* text);
+ |
+
+
+ |
+
+ |
+
+
+ const char* Text() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetValue(int32 value);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t Invoke(BMessage* msg = NULL);
+ |
+
+
+ |
+
+ |
+
+
+ BTextView* TextView() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetModificationMessage(BMessage* message);
+ |
+
+
+ |
+
+ |
+
+
+ BMessage* ModificationMessage() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetAlignment(alignment label, alignment text);
+ |
+
+
+ |
+
+ |
+
+
+ void GetAlignment(alignment* label, alignment* text) const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetDivider(float dividing_line);
+ |
+
+
+ |
+
+ |
+
+
+ float Divider() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual void Draw(BRect updateRect);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseDown(BPoint where);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AttachedToWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MakeFocus(bool focusState = true);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetEnabled(bool state);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameMoved(BPoint new_position);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void FrameResized(float new_width, float new_height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void WindowActivated(bool active);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void GetPreferredSize(float* width, float* height);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void ResizeToPreferred();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MessageReceived(BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseUp(BPoint pt);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* msg);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void DetachedFromWindow();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllAttached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual void AllDetached();
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t GetSupportedSuites(BMessage* data);
+ |
+
+
+ |
+
+ |
+
+
+ virtual void SetFlags(uint32 flags);
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+ | Legend |
+
+
+
+
+
+  |
+ Functional Spec |
+
+
+  |
+ Use Cases |
+
+
+  |
+ Unit Tests |
+
+
+  |
+ Technical Spec |
+
+
+  |
+ Implementation |
+
+
+  |
+ Completed |
+
+
+ |
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
diff --git a/docs/develop/ikteam/schedule/supportkit/BStopWatch.html b/docs/develop/ikteam/schedule/supportkit/BStopWatch.html
new file mode 100644
index 0000000000..3ddcd13134
--- /dev/null
+++ b/docs/develop/ikteam/schedule/supportkit/BStopWatch.html
@@ -0,0 +1,339 @@
+
+
+ BStopWatch Tasks
+
+
+BStopWatch Tasks
+
+
+
+
+
+ |
+
+ |
+ Task |
+ Owner |
+
+
+
+ | Class BStopWatch |
+
+
+ |
+
+ |
+
+
+ BStopWatch(const char *name, bool silent = false);
+ |
+
+
+
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BStopWatch();
+ |
+
+
+
+ |
+
+
+ |
+
+ |
+
+
+ void Suspend();
+ |
+
+
+
+ |
+
+
+ |
+
+ |
+
+
+ void Resume();
+ |
+
+
+
+ |
+
+
+ |
+
+ |
+
+
+ bigtime_t Lap();
+ |
+
+
+
+ |
+
+
+ |
+
+ |
+
+
+ bigtime_t ElapsedTime() const;
+ |
+
+
+
+ |
+
+
+ |
+
+ |
+
+
+ void Reset();
+ |
+
+
+
+ |
+
+
+ |
+
+ |
+
+
+ const char* Name() const;
+ |
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+ | Legend |
+
+
+
+
+
+  |
+ Functional Spec |
+
+
+  |
+ Use Cases |
+
+
+  |
+ Unit Tests |
+
+
+  |
+ Technical Spec |
+
+
+  |
+ Implementation |
+
+
+  |
+ Completed |
+
+
+ |
+
+
+
+
+
+
+
+Hosted by:
+
+
+
+
+
+Copyright © 2001-2002 OpenBeOS Project
+
+
+
+
diff --git a/docs/develop/ikteam/schedule/supportkit/IO.html b/docs/develop/ikteam/schedule/supportkit/IO.html
new file mode 100644
index 0000000000..4e71f8a097
--- /dev/null
+++ b/docs/develop/ikteam/schedule/supportkit/IO.html
@@ -0,0 +1,904 @@
+
+
+ IO Tasks
+
+
+IO Tasks
+
+
+
+
+
+ |
+
+ |
+ Task Summary |
+ Owner |
+
+ |
+
+ |
+
+
+ BDataIO
+ |
+
+
+ Steve Vallee
+ |
+
+
+ |
+
+ |
+
+
+ BMallocIO
+ |
+
+
+ Steve Vallee
+ |
+
+
+ |
+
+ |
+
+
+ BMemoryIO
+ |
+
+
+ Steve Vallee
+ |
+
+
+ |
+
+ |
+
+
+ BPositionIO
+ |
+
+
+ Steve Vallee
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+ |
+ Task Details |
+
+
+
+
+ | BDataIO Class |
+
+
+ |
+
+ |
+
+
+ BDataIO
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BDataIO();
+ |
+
+
+
+ | BMallocIO Class |
+
+
+ |
+
+ |
+
+
+ BMallocIO();
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BMallocIO();
+ |
+
+
+ |
+
+ |
+
+
+ virtual ssize_t ReadAt(off_t pos, void *buffer, size_t size);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ssize_t WriteAt(off_t pos, const void *buffer, size_t size);
+ |
+
+
+ |
+
+ |
+
+
+ virtual off_t Seek(off_t pos, uint32 seek_mode);
+ |
+
+
+ |
+
+ |
+
+
+ virtual off_t Position() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t SetSize(off_t size);
+ |
+
+
+ |
+
+ |
+
+
+ void SetBlockSize(size_t blocksize);
+ |
+
+
+ |
+
+ |
+
+
+ const void* Buffer() const;
+ |
+
+
+ |
+
+ |
+
+
+ size_t BufferLength() const;
+ |
+
+
+
+ | BMemoryIO Class |
+
+
+ |
+
+ |
+
+
+ BMemoryIO(void *p, size_t len);
+ |
+
+
+ |
+
+ |
+
+
+ BMemoryIO(const void *p, size_t len);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BMemoryIO();
+ |
+
+
+ |
+
+ |
+
+
+ virtual ssize_t ReadAt(off_t pos, void *buffer, size_t size);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ssize_t WriteAt(off_t pos, const void *buffer, size_t size);
+ |
+
+
+ |
+
+ |
+
+
+ virtual off_t Seek(off_t pos, uint32 seek_mode);
+ |
+
+
+ |
+
+ |
+
+
+ virtual off_t Position() const;
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t SetSize(off_t size);
+ |
+
+
+
+ | BPositionIO Class |
+
+
+ |
+
+ |
+
+
+ BPositionIO();
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BPositionIO();
+ |
+
+
+ |
+
+ |
+
+
+ virtual ssize_t Read(void *buffer, size_t size);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ssize_t Write(const void *buffer, size_t size);
+ |
+
+
+ |
+
+ |
+
+
+ virtual status_t SetSize(off_t size);
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+ | Legend |
+
+
+
+
+
+  |
+ Functional Spec |
+
+
+  |
+ Use Cases |
+
+
+  |
+ Unit Tests |
+
+
+  |
+ Technical Spec |
+
+
+  |
+ Implementation |
+
+
+  |
+ Completed |
+
+
+ |
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
diff --git a/docs/develop/ikteam/schedule/supportkit/SupportKitMilestones.html b/docs/develop/ikteam/schedule/supportkit/SupportKitMilestones.html
new file mode 100644
index 0000000000..b49411d0d2
--- /dev/null
+++ b/docs/develop/ikteam/schedule/supportkit/SupportKitMilestones.html
@@ -0,0 +1,168 @@
+
+
+ Support Kit Milestones
+
+
+
+Support Kit Milestones
+
+
+ -
+ Interface specs completed for all classes, functions, structs
+
+
+
+
+
+ |
+
+ |
+
+ |
+
+ 16% |
+
+
+
+
+
+
+ -
+ Use cases completed for all classes, functions, structs
+
+
+
+
+
+ |
+
+ |
+
+ |
+
+ 16% |
+
+
+
+
+
+
+ -
+ Unit tests completed for all classes, functions, structs
+
+
+
+
+
+ |
+
+ |
+
+ |
+
+ 16% |
+
+
+
+
+
+
+ -
+ Design discussions completed for all classes, functions, structs
+
+
+
+
+
+ |
+
+ |
+
+ |
+
+ 16% |
+
+
+
+
+
+
+ -
+ IO complete
+
+
-
+ Utilities complete
+
+
+
+
+
+ -
+ Synchronization complete
+
+
+
+
+
+ |
+
+ |
+
+ |
+
+ 60% |
+
+
+
+
+
+
+ -
+ Alpha
+
+ -
+ Beta 1
+
+ -
+ Beta 2
+
+ -
+ Release Candidate 1
+
+ -
+ 1.0!
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
+
diff --git a/docs/develop/ikteam/schedule/supportkit/Synchronization.html b/docs/develop/ikteam/schedule/supportkit/Synchronization.html
new file mode 100644
index 0000000000..9346ffa18d
--- /dev/null
+++ b/docs/develop/ikteam/schedule/supportkit/Synchronization.html
@@ -0,0 +1,688 @@
+
+
+ Synchronization Tasks
+
+
+Synchronization Tasks
+
+
+
+
+
+ |
+
+ |
+ Task Summary |
+ Owner |
+
+ |
+
+ |
+
+
+ BAutoLock
+ |
+
+
+ Jeremy Rand
+ |
+
+
+ |
+
+ |
+
+
+ BLocker
+ |
+
+
+ Jeremy Rand
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+ |
+ Task Details |
+
+
+
+
+ | BAutoLock Class |
+
+
+ |
+
+ |
+
+
+ BAutolock(BLocker *lock);
+ |
+
+
+ |
+
+ |
+
+
+ BAutolock(BLocker &lock);
+ |
+
+
+ |
+
+ |
+
+
+ BAutolock(BLooper *looper);
+ |
+
+
+ |
+
+ |
+
+
+ ~BAutolock();
+ |
+
+
+ |
+
+ |
+
+
+ bool IsLocked();
+ |
+
+
+
+ | BLocker Class |
+
+
+ |
+
+ |
+
+
+ BLocker();
+ |
+
+
+ |
+
+ |
+
+
+ BLocker(const char *name);
+ |
+
+
+ |
+
+ |
+
+
+ BLocker(bool benaphore_style);
+ |
+
+
+ |
+
+ |
+
+
+ BLocker(const char *name, bool benaphore_style);
+ |
+
+
+ |
+
+ |
+
+
+ BLocker(const char *name, bool benaphore_style, bool);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BLocker();
+ |
+
+
+ |
+
+ |
+
+
+ bool Lock(void);
+ |
+
+
+ |
+
+ |
+
+
+ status_t LockWithTimeout(bigtime_t timeout);
+ |
+
+
+ |
+
+ |
+
+
+ void Unlock(void);
+ |
+
+
+ |
+
+ |
+
+
+ thread_id LockingThread(void) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool IsLocked(void) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 CountLocks(void) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 CountLockRequests(void) const;
+ |
+
+
+ |
+
+ |
+
+
+ sem_id Sem(void) const;
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+ | Legend |
+
+
+
+
+
+  |
+ Functional Spec |
+
+
+  |
+ Use Cases |
+
+
+  |
+ Unit Tests |
+
+
+  |
+ Technical Spec |
+
+
+  |
+ Implementation |
+
+
+  |
+ Completed |
+
+
+ |
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
diff --git a/docs/develop/ikteam/schedule/supportkit/Utilities.html b/docs/develop/ikteam/schedule/supportkit/Utilities.html
new file mode 100644
index 0000000000..66d50b6b44
--- /dev/null
+++ b/docs/develop/ikteam/schedule/supportkit/Utilities.html
@@ -0,0 +1,4920 @@
+
+
+ Utilities Tasks
+
+
+Utilities Tasks
+
+
+
+
+
+ |
+
+ |
+ Task Summary |
+ Owner |
+
+ |
+
+ |
+
+
+ Misc
+ |
+
+
+ Steve Vallee
+ |
+
+
+ |
+
+ |
+
+
+ BString Utility
+ |
+
+
+ Steve Vallee
+ |
+
+
+ |
+
+ |
+
+
+ BList
+ |
+
+
+ Issac Yonemoto
+ |
+
+
+ |
+
+ |
+
+
+ BString
+ |
+
+
+ Steve Vallee
+ |
+
+
+ |
+
+ |
+
+
+ BBlockCache
+ |
+
+
+ Graham Gilmore
+ |
+
+
+ |
+
+ |
+
+
+ BStopWatch
+ |
+
+
+ Steve Vallee
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+ |
+ Task Details |
+
+
+
+
+ | Misc Functions |
+
+
+ |
+
+ |
+
+
+ convert_from_utf8
+ |
+
+
+ |
+
+ |
+
+
+ convert_to_utf8
+ |
+
+
+
+ | BString Utility Functions |
+
+
+ |
+
+ |
+
+
+ bool operator<(const char *, const BString &);
+ |
+
+
+ |
+
+ |
+
+
+ bool operator<=(const char *, const BString &);
+ |
+
+
+ |
+
+ |
+
+
+ bool operator==(const char *, const BString &);
+ |
+
+
+ |
+
+ |
+
+
+ bool operator>(const char *, const BString &);
+ |
+
+
+ |
+
+ |
+
+
+ bool operator>=(const char *, const BString &);
+ |
+
+
+ |
+
+ |
+
+
+ bool operator!=(const char *, const BString &);
+ |
+
+
+ |
+
+ |
+
+
+ int Compare(const BString &, const BString &);
+ |
+
+
+ |
+
+ |
+
+
+ int ICompare(const BString &, const BString &);
+ |
+
+
+ |
+
+ |
+
+
+ int Compare(const BString *, const BString *);
+ |
+
+
+ |
+
+ |
+
+
+ int ICompare(const BString *, const BString *);
+ |
+
+
+
+ | BList Class |
+
+
+ |
+
+ |
+
+
+ BList(int32 itemsPerBlock = 20);
+ |
+
+
+ |
+
+ |
+
+
+ BList(const BList&);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BList();
+ |
+
+
+ |
+
+ |
+
+
+ BList& operator=(const BList &from);
+ |
+
+
+ |
+
+ |
+
+
+ bool AddItem(void *item);
+ |
+
+
+ |
+
+ |
+
+
+ bool AddItem(void *item, int32 atIndex);
+ |
+
+
+ |
+
+ |
+
+
+ bool AddList(BList *newItems);
+ |
+
+
+ |
+
+ |
+
+
+ bool AddList(BList *newItems, int32 atIndex);
+ |
+
+
+ |
+
+ |
+
+
+ bool RemoveItem(void *item);
+ |
+
+
+ |
+
+ |
+
+
+ void* RemoveItem(int32 index);
+ |
+
+
+ |
+
+ |
+
+
+ bool RemoveItems(int32 index, int32 count);
+ |
+
+
+ |
+
+ |
+
+
+ bool ReplaceItem(int32 index, void *newItem);
+ |
+
+
+ |
+
+ |
+
+
+ void MakeEmpty();
+ |
+
+
+ |
+
+ |
+
+
+ void SortItems(int (*cmp)(const void *, const void *));
+ |
+
+
+ |
+
+ |
+
+
+ bool SwapItems(int32 indexA, int32 indexB);
+ |
+
+
+ |
+
+ |
+
+
+ bool MoveItem(int32 fromIndex, int32 toIndex);
+ |
+
+
+ |
+
+ |
+
+
+ void* ItemAt(int32) const;
+ |
+
+
+ |
+
+ |
+
+
+ void* ItemAtFast(int32) const;
+ |
+
+
+ |
+
+ |
+
+
+ void* FirstItem() const;
+ |
+
+
+ |
+
+ |
+
+
+ void* LastItem() const;
+ |
+
+
+ |
+
+ |
+
+
+ void* Items() const;
+ |
+
+
+ |
+
+ |
+
+
+ bool HasItem(void *item) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 IndexOf(void *item) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 CountItems() const;
+ |
+
+
+ |
+
+ |
+
+
+ bool IsEmpty() const;
+ |
+
+
+ |
+
+ |
+
+
+ void DoForEach(bool (*func)(void *));
+ |
+
+
+ |
+
+ |
+
+
+ void DoForEach(bool (*func)(void *, void *), void *);
+ |
+
+
+
+ | BString Class |
+
+
+ |
+
+ |
+
+
+ BString();
+ |
+
+
+ |
+
+ |
+
+
+ BString(const char *);
+ |
+
+
+ |
+
+ |
+
+
+ BString(const BString &);
+ |
+
+
+ |
+
+ |
+
+
+ BString(const char *, int32 maxLength);
+ |
+
+
+ |
+
+ |
+
+
+ ~BString();
+ |
+
+
+ |
+
+ |
+
+
+ const char* String() const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 Length() const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 CountChars() const;
+ |
+
+
+ |
+
+ |
+
+
+ BString& operator=(const BString &);
+ |
+
+
+ |
+
+ |
+
+
+ BString& operator=(const char *);
+ |
+
+
+ |
+
+ |
+
+
+ BString& operator=(char);
+ |
+
+
+ |
+
+ |
+
+
+ BString& SetTo(const char *);
+ |
+
+
+ |
+
+ |
+
+
+ BString& SetTo(const char *, int32 length);
+ |
+
+
+ |
+
+ |
+
+
+ BString& SetTo(const BString &from);
+ |
+
+
+ |
+
+ |
+
+
+ BString& Adopt(BString &from);
+ |
+
+
+ |
+
+ |
+
+
+ BString& SetTo(const BString &, int32 length);
+ |
+
+
+ |
+
+ |
+
+
+ BString& Adopt(BString &from, int32 length);
+ |
+
+
+ |
+
+ |
+
+
+ BString& SetTo(char, int32 count);
+ |
+
+
+ |
+
+ |
+
+
+ BString& CopyInto(BString &into, int32 fromOffset, int32 length) const;
+ |
+
+
+ |
+
+ |
+
+
+ void CopyInto(char *into, int32 fromOffset, int32 length) const;
+ |
+
+
+ |
+
+ |
+
+
+ BString& operator+=(const BString &);
+ |
+
+
+ |
+
+ |
+
+
+ BString& operator+=(const char *);
+ |
+
+
+ |
+
+ |
+
+
+ BString& operator+=(char);
+ |
+
+
+ |
+
+ |
+
+
+ BString& Append(const BString &);
+ |
+
+
+ |
+
+ |
+
+
+ BString& Append(const char *);
+ |
+
+
+ |
+
+ |
+
+
+ BString& Append(const BString &, int32 length);
+ |
+
+
+ |
+
+ |
+
+
+ BString& Append(const char *, int32 length);
+ |
+
+
+ |
+
+ |
+
+
+ BString& Append(char, int32 count);
+ |
+
+
+ |
+
+ |
+
+
+ BString& Prepend(const char *);
+ |
+
+
+ |
+
+ |
+
+
+ BString& Prepend(const BString &);
+ |
+
+
+ |
+
+ |
+
+
+ BString& Prepend(const char *, int32);
+ |
+
+
+ |
+
+ |
+
+
+ BString& Prepend(const BString &, int32);
+ |
+
+
+ |
+
+ |
+
+
+ BString& Prepend(char, int32 count);
+ |
+
+
+ |
+
+ |
+
+
+ BString& Insert(const char *, int32 pos);
+ |
+
+
+ |
+
+ |
+
+
+ BString& Insert(const char *, int32 length, int32 pos);
+ |
+
+
+ |
+
+ |
+
+
+ BString& Insert(const char *, int32 fromOffset, int32 length, int32 pos);
+ |
+
+
+ |
+
+ |
+
+
+ BString& Insert(const BString &, int32 pos);
+ |
+
+
+ |
+
+ |
+
+
+ BString& Insert(const BString &, int32 length, int32 pos);
+ |
+
+
+ |
+
+ |
+
+
+ BString& Insert(const BString &, int32 fromOffset, int32 length, int32 pos);
+ |
+
+
+ |
+
+ |
+
+
+ BString& Insert(char, int32 count, int32 pos);
+ |
+
+
+ |
+
+ |
+
+
+ BString& Truncate(int32 newLength, bool lazy = true);
+ |
+
+
+ |
+
+ |
+
+
+ BString& Remove(int32 from, int32 length);
+ |
+
+
+ |
+
+ |
+
+
+ BString& RemoveFirst(const BString &);
+ |
+
+
+ |
+
+ |
+
+
+ BString& RemoveLast(const BString &);
+ |
+
+
+ |
+
+ |
+
+
+ BString& RemoveAll(const BString &);
+ |
+
+
+ |
+
+ |
+
+
+ BString& RemoveFirst(const char *);
+ |
+
+
+ |
+
+ |
+
+
+ BString& RemoveLast(const char *);
+ |
+
+
+ |
+
+ |
+
+
+ BString& RemoveAll(const char *);
+ |
+
+
+ |
+
+ |
+
+
+ BString& RemoveSet(const char *setOfCharsToRemove);
+ |
+
+
+ |
+
+ |
+
+
+ BString& MoveInto(BString &into, int32 from, int32 length);
+ |
+
+
+ |
+
+ |
+
+
+ void MoveInto(char *into, int32 from, int32 length);
+ |
+
+
+ |
+
+ |
+
+
+ bool operator<(const BString &) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool operator<=(const BString &) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool operator==(const BString &) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool operator>=(const BString &) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool operator>(const BString &) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool operator!=(const BString &) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool operator<(const char *) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool operator<=(const char *) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool operator==(const char *) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool operator>=(const char *) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool operator>(const char *) const;
+ |
+
+
+ |
+
+ |
+
+
+ bool operator!=(const char *) const;
+ |
+
+
+ |
+
+ |
+
+
+ int Compare(const BString &) const;
+ |
+
+
+ |
+
+ |
+
+
+ int Compare(const char *) const;
+ |
+
+
+ |
+
+ |
+
+
+ int Compare(const BString &, int32 n) const;
+ |
+
+
+ |
+
+ |
+
+
+ int Compare(const char *, int32 n) const;
+ |
+
+
+ |
+
+ |
+
+
+ int ICompare(const BString &) const;
+ |
+
+
+ |
+
+ |
+
+
+ int ICompare(const char *) const;
+ |
+
+
+ |
+
+ |
+
+
+ int ICompare(const BString &, int32 n) const;
+ |
+
+
+ |
+
+ |
+
+
+ int ICompare(const char *, int32 n) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 FindFirst(const BString &) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 FindFirst(const char *) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 FindFirst(const BString &, int32 fromOffset) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 FindFirst(const char *, int32 fromOffset) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 FindFirst(char) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 FindFirst(char, int32 fromOffset) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 FindLast(const BString &) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 FindLast(const char *) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 FindLast(const BString &, int32 beforeOffset) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 FindLast(const char *, int32 beforeOffset) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 FindLast(char) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 FindLast(char, int32 fromOffset) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 IFindFirst(const BString &) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 IFindFirst(const char *) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 IFindFirst(const BString &, int32 fromOffset) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 IFindFirst(const char *, int32 fromOffset) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 IFindLast(const BString &) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 IFindLast(const char *) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 IFindLast(const BString &, int32 beforeOffset) const;
+ |
+
+
+ |
+
+ |
+
+
+ int32 IFindLast(const char *, int32 beforeOffset) const;
+ |
+
+
+ |
+
+ |
+
+
+ BString& ReplaceFirst(char replaceThis, char withThis);
+ |
+
+
+ |
+
+ |
+
+
+ BString& ReplaceLast(char replaceThis, char withThis);
+ |
+
+
+ |
+
+ |
+
+
+ BString& ReplaceAll(char replaceThis, char withThis, int32 fromOffset = 0);
+ |
+
+
+ |
+
+ |
+
+
+ BString& Replace(char replaceThis, char withThis, int32 maxReplaceCount, int32 fromOffset = 0);
+ |
+
+
+ |
+
+ |
+
+
+ BString& ReplaceFirst(const char *replaceThis, const char *withThis);
+ |
+
+
+ |
+
+ |
+
+
+ BString& ReplaceLast(const char *replaceThis, const char *withThis);
+ |
+
+
+ |
+
+ |
+
+
+ BString& ReplaceAll(const char *replaceThis, const char *withThis, int32 fromOffset = 0);
+ |
+
+
+ |
+
+ |
+
+
+ BString& Replace(const char *replaceThis, const char *withThis, int32 maxReplaceCount, int32 fromOffset = 0);
+ |
+
+
+ |
+
+ |
+
+
+ BString& IReplaceFirst(char replaceThis, char withThis);
+ |
+
+
+ |
+
+ |
+
+
+ BString& IReplaceLast(char replaceThis, char withThis);
+ |
+
+
+ |
+
+ |
+
+
+ BString& IReplaceAll(char replaceThis, char withThis, int32 fromOffset = 0);
+ |
+
+
+ |
+
+ |
+
+
+ BString& IReplace(char replaceThis, char withThis, int32 maxReplaceCount, int32 fromOffset = 0);
+ |
+
+
+ |
+
+ |
+
+
+ BString& IReplaceFirst(const char *replaceThis, const char *withThis);
+ |
+
+
+ |
+
+ |
+
+
+ BString& IReplaceLast(const char *replaceThis, const char *withThis);
+ |
+
+
+ |
+
+ |
+
+
+ BString& IReplaceAll(const char *replaceThis, const char *withThis, int32 fromOffset = 0);
+ |
+
+
+ |
+
+ |
+
+
+ BString& IReplace(const char *replaceThis, const char *withThis, int32 maxReplaceCount, int32 fromOffset = 0);
+ |
+
+
+ |
+
+ |
+
+
+ BString& ReplaceSet(const char *setOfChars, char with);
+ |
+
+
+ |
+
+ |
+
+
+ BString& ReplaceSet(const char *setOfChars, const char *with);
+ |
+
+
+ |
+
+ |
+
+
+ char operator[](int32 index) const;
+ |
+
+
+ |
+
+ |
+
+
+ char& operator[](int32 index);
+ |
+
+
+ |
+
+ |
+
+
+ char ByteAt(int32 index) const;
+ |
+
+
+ |
+
+ |
+
+
+ char* LockBuffer(int32 maxLength);
+ |
+
+
+ |
+
+ |
+
+
+ BString& UnlockBuffer(int32 length = -1);
+ |
+
+
+ |
+
+ |
+
+
+ BString& ToLower();
+ |
+
+
+ |
+
+ |
+
+
+ BString& ToUpper();
+ |
+
+
+ |
+
+ |
+
+
+ BString& Capitalize();
+ |
+
+
+ |
+
+ |
+
+
+ BString& CapitalizeEachWord();
+ |
+
+
+ |
+
+ |
+
+
+ BString& CharacterEscape(const char* original, const char* setOfCharsToEscape, char escapeWith);
+ |
+
+
+ |
+
+ |
+
+
+ BString& CharacterEscape(const char *setOfCharsToEscape, char escapeWith);
+ |
+
+
+ |
+
+ |
+
+
+ BString& CharacterDeescape(const char *original, char escapeChar);
+ |
+
+
+ |
+
+ |
+
+
+ BString& CharacterDeescape(char escapeChar);
+ |
+
+
+ |
+
+ |
+
+
+ BString& operator<<(const char *);
+ |
+
+
+ |
+
+ |
+
+
+ BString& operator<<(const BString &);
+ |
+
+
+ |
+
+ |
+
+
+ BString& operator<<(char);
+ |
+
+
+ |
+
+ |
+
+
+ BString& operator<<(int);
+ |
+
+
+ |
+
+ |
+
+
+ BString& operator<<(unsigned int);
+ |
+
+
+ |
+
+ |
+
+
+ BString& operator<<(uint32);
+ |
+
+
+ |
+
+ |
+
+
+ BString& operator<<(int32);
+ |
+
+
+ |
+
+ |
+
+
+ BString& operator<<(uint64);
+ |
+
+
+ |
+
+ |
+
+
+ BString& operator<<(int64);
+ |
+
+
+ |
+
+ |
+
+
+ BString& operator<<(float);
+ |
+
+
+
+ | BBlockCache Class |
+
+
+ |
+
+ |
+
+
+ BBlockCache(size_t cache_size, size_t block_size, uint32 type);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BBlockCache();
+ |
+
+
+ |
+
+ |
+
+
+ void* Get(size_t block_size);
+ |
+
+
+ |
+
+ |
+
+
+ void Save(void *pointer, size_t block_size);
+ |
+
+
+
+ | BStopWatch Class |
+
+
+ |
+
+ |
+
+
+ BStopWatch(const char *name, bool silent = false);
+ |
+
+
+ |
+
+ |
+
+
+ virtual ~BStopWatch();
+ |
+
+
+ |
+
+ |
+
+
+ void Suspend();
+ |
+
+
+ |
+
+ |
+
+
+ void Resume();
+ |
+
+
+ |
+
+ |
+
+
+ bigtime_t Lap();
+ |
+
+
+ |
+
+ |
+
+
+ bigtime_t ElapsedTime() const;
+ |
+
+
+ |
+
+ |
+
+
+ void Reset();
+ |
+
+
+ |
+
+ |
+
+
+ const char* Name() const;
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+ | Legend |
+
+
+
+
+
+  |
+ Functional Spec |
+
+
+  |
+ Use Cases |
+
+
+  |
+ Unit Tests |
+
+
+  |
+ Technical Spec |
+
+
+  |
+ Implementation |
+
+
+  |
+ Completed |
+
+
+ |
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
diff --git a/docs/develop/ikteam/schedule/templates/assignments.html b/docs/develop/ikteam/schedule/templates/assignments.html
new file mode 100644
index 0000000000..67cadc1865
--- /dev/null
+++ b/docs/develop/ikteam/schedule/templates/assignments.html
@@ -0,0 +1,83 @@
+
+
+ Interface Kit Team Assignments
+
+
+
+ Interface Kit Team Assignments and Open Tasks
+
+
+
+
+ Assignments:
+
+
+
+
+@for_each engineer in $Assignments.engineers
+
+ |
+ $engineer.name
+ |
+
+@for_each etask in $engineer.tasks
+
+ |
+ |
+
+ $etask.str
+ |
+
+@end
+
+ |
+
+@end
+
+
+
+
+
+ Open Tasks:
+
+
+
+
+@for_each section in $Assignments.sections
+
+ |
+ $section.name
+ |
+
+@for_each stask in $section.tasks
+
+ |
+ |
+
+ $stask.str
+ |
+
+@end
+
+ |
+
+@end
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
\ No newline at end of file
diff --git a/docs/develop/ikteam/schedule/templates/group.html b/docs/develop/ikteam/schedule/templates/group.html
new file mode 100644
index 0000000000..6dcb37ce37
--- /dev/null
+++ b/docs/develop/ikteam/schedule/templates/group.html
@@ -0,0 +1,167 @@
+
+
+
+ $GROUP.name Milestones
+
+
+
+
+$GROUP.name Milestones
+
+
+ -
+ Interface specs completed for all classes, functions, structs
+
+@if $GROUP.ispec_complete
+
+
+
+
+
+ |
+
+ |
+
+ |
+
+ $GROUP.ispec_complete% |
+
+
+
+
+@end
+
+
+ -
+ Use cases completed for all classes, functions, structs
+
+@if $GROUP.cases_complete
+
+
+
+
+
+ |
+
+ |
+
+ |
+
+ $GROUP.cases_complete% |
+
+
+
+
+@end
+
+
+ -
+ Unit tests completed for all classes, functions, structs
+
+@if $GROUP.tests_complete
+
+
+
+
+
+ |
+
+ |
+
+ |
+
+ $GROUP.tests_complete% |
+
+
+
+
+@end
+
+
+ -
+ Design discussions completed for all classes, functions, structs
+
+@if $GROUP.tspec_complete
+
+
+
+
+
+ |
+
+ |
+
+ |
+
+ $GROUP.tspec_complete% |
+
+
+
+
+@end
+
+
+
+@for_each milestone in $GROUP.milestones
+ -
+ $milestone.name$milestone.note complete
+@if $milestone.complete
+
+
+
+
+
+ |
+
+ |
+
+ |
+
+ $milestone.complete% |
+
+
+
+
+@end
+@end
+
+
+ -
+ Alpha
+
+ -
+ Beta 1
+
+ -
+ Beta 2
+
+ -
+ Release Candidate 1
+
+ -
+ 1.0!
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
+
diff --git a/docs/develop/ikteam/schedule/templates/index.html b/docs/develop/ikteam/schedule/templates/index.html
new file mode 100644
index 0000000000..99ddbb41f0
--- /dev/null
+++ b/docs/develop/ikteam/schedule/templates/index.html
@@ -0,0 +1,100 @@
+
+
+ Interface Kit Team Schedule
+
+
+Interface Kit Team Schedule
+
+Here is the schedule for the Interface Kit Team. To help organize our work,
+tasks have been broken into 4 general areas:
+
+
+@for_each group in $GROUPS
+ - $group.name$group.note
+@end
+
+
+
+Organizationally, it's best to consider these as separate projects within the
+scope of the IK Team's charter. As such, core contributors should pick a
+project and stick with it -- it will make things a lot easier to keep track of,
+and losing track of stuff would be a bad thing. =)
+
+DarkWyrm is the technical lead for the app_server; he has done an enormous amount
+of research and he is currently in the best position to lead the effort.
+
+Erik Jakowatz will continue in his capacity as overall project lead, as well as
+being directly involved in Integration as technical lead.
+
+A word of warning: this schedule is downright huge because of the sheer number of
+items to be completed. There is a paper available in which the rationale behind the
+schedule is discussed.
+
+
+Current Status
+Here are some fuzzy indicators of what progress the team has made base on the number of
+outstanding tasks completed. No warranty is made concerning the accuracy of these
+graphs. =)
+
+
+
+
+
+
+ | Overall |
+
+
+
+
+
+
+
+ |
+
+ |
+
+ $GROUPS.complete% |
+
+
+
+
+
+
+@for_each group in $GROUPS
+
+
+
$group.name |
+
+
+
+
+
+
+ |
+
+ |
+
+ $group.complete% |
+
+
+
+@end
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
\ No newline at end of file
diff --git a/docs/develop/ikteam/schedule/templates/milestone.html b/docs/develop/ikteam/schedule/templates/milestone.html
new file mode 100644
index 0000000000..6e307f7a23
--- /dev/null
+++ b/docs/develop/ikteam/schedule/templates/milestone.html
@@ -0,0 +1,29 @@
+
+
+
+ $GROUP.name Tasks
+
+
+
+
+$GROUP.name Tasks
+@for_each milestone in $GROUP.milestones
+$milestone.name
+@end
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
\ No newline at end of file
diff --git a/docs/develop/ikteam/schedule/templates/tasks.html b/docs/develop/ikteam/schedule/templates/tasks.html
new file mode 100644
index 0000000000..dedc740ca0
--- /dev/null
+++ b/docs/develop/ikteam/schedule/templates/tasks.html
@@ -0,0 +1,254 @@
+
+
+
+ $MILESTONE.name Tasks
+
+
+$MILESTONE.name Tasks
+
+
+
+
+
+ |
+
+ |
+ Task Summary |
+ Owner |
+
+@for_each s in $MILESTONE
+
+ |
+
+ |
+
+
+ $s.name
+ |
+
+
+ $s.owner
+ |
+
+@end
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+ |
+ Task Details |
+
+
+
+@for_each s in $MILESTONE
+
+
+ | $s.name $s.type |
+
+@for_each t in $s.tasks
+
+ |
+
+ |
+
+
+ $t.name
+ |
+
+@end
+@end
+
+
+
+
+
+
+
+
+
+
+
+ | Legend |
+
+
+
+
+
+  |
+ Functional Spec |
+
+
+  |
+ Use Cases |
+
+
+  |
+ Unit Tests |
+
+
+  |
+ Technical Spec |
+
+
+  |
+ Implementation |
+
+
+  |
+ Completed |
+
+
+ |
+
+
+
+
+
+
+
+The OpenBeOS project is hosted by:
+
+
+
+
+
+Copyright © 2001-2002
+OpenBeOS Project
+
+
+
+
diff --git a/docs/develop/input/BInputServerDevice b/docs/develop/input/BInputServerDevice
new file mode 100644
index 0000000000..9ab5675d17
--- /dev/null
+++ b/docs/develop/input/BInputServerDevice
@@ -0,0 +1,16 @@
+BInputServerDevice::_ReservedInputServerDevice4(void)
+BInputServerDevice::_ReservedInputServerDevice3(void)
+BInputServerDevice::_ReservedInputServerDevice2(void)
+BInputServerDevice::_ReservedInputServerDevice1(void)
+BInputServerDevice::StopMonitoringDevice(char
+BInputServerDevice::StartMonitoringDevice(char
+BInputServerDevice::EnqueueMessage(BMessage
+BInputServerDevice::UnregisterDevices(input_device_ref
+BInputServerDevice::RegisterDevices(input_device_ref
+BInputServerDevice::Control(char
+BInputServerDevice::Stop(char
+BInputServerDevice::Start(char
+BInputServerDevice::SystemShuttingDown(void)
+BInputServerDevice::InitCheck(void)
+BInputServerDevice::~BInputServerDevice(void)
+BInputServerDevice::BInputServerDevice(void)
\ No newline at end of file
diff --git a/docs/develop/input/BInputServerFilter b/docs/develop/input/BInputServerFilter
new file mode 100644
index 0000000000..7056e82f8b
--- /dev/null
+++ b/docs/develop/input/BInputServerFilter
@@ -0,0 +1,9 @@
+BInputServerFilter::_ReservedInputServerFilter4(void)
+BInputServerFilter::_ReservedInputServerFilter3(void)
+BInputServerFilter::_ReservedInputServerFilter2(void)
+BInputServerFilter::_ReservedInputServerFilter1(void)
+BInputServerFilter::GetScreenRegion(BRegion
+BInputServerFilter::Filter(BMessage
+BInputServerFilter::InitCheck(void)
+BInputServerFilter::~BInputServerFilter(void)
+BInputServerFilter::BInputServerFilter(void)
\ No newline at end of file
diff --git a/docs/develop/input/BInputServerMethod b/docs/develop/input/BInputServerMethod
new file mode 100644
index 0000000000..f3606768b9
--- /dev/null
+++ b/docs/develop/input/BInputServerMethod
@@ -0,0 +1,11 @@
+BInputServerMethod::_ReservedInputServerMethod4(void)
+BInputServerMethod::_ReservedInputServerMethod3(void)
+BInputServerMethod::_ReservedInputServerMethod2(void)
+BInputServerMethod::_ReservedInputServerMethod1(void)
+BInputServerMethod::SetMenu(BMenu
+BInputServerMethod::SetIcon(unsigned
+BInputServerMethod::SetName(char
+BInputServerMethod::EnqueueMessage(BMessage
+BInputServerMethod::MethodActivated(bool)
+BInputServerMethod::~BInputServerMethod(void)
+BInputServerMethod::BInputServerMethod(char
\ No newline at end of file
diff --git a/docs/develop/input/Function Specs b/docs/develop/input/Function Specs
new file mode 100644
index 0000000000..4cc4fae1b5
--- /dev/null
+++ b/docs/develop/input/Function Specs
@@ -0,0 +1,32 @@
+**************** BInputServerDevice Section ***************
+
+ BInputServerDevice();
+virtual ~BInputServerDevice();
+virtual status_t InitCheck();
+virtual status_t SystemShuttingDown();
+virtual status_t Start(const char *device, void *cookie);
+virtual status_t Stop(const char *device, void *cookie);
+virtual status_t Control(const char *device, void *cookie, int32 code, BMessage *message);
+status_t RegisterDevices(input_device_ref **devices);
+status_t UnregisterDevices(input_device_ref **devices);
+status_t EnqueueMessage(BMessage *message);
+status_t StartMonitoringDevice(const char *device);
+status_t StopMonitoringDevice(const char *device);
+
+**************** BInputServerFilter Section *****************
+
+ BInputServerFilter();
+virtual ~BInputServerFilter();
+virtual status_t InitCheck();
+virtual filter_result Filter(BMessage *message, BList *outList);
+status_t GetScreenRegion(BRegion *region) const;
+
+***************** BInputServerMethod Section *****************
+
+ BInputServerMethod(const char *name, const uchar *icon);
+virtual ~BInputServerMethod();
+virtual status_t MethodActivated(bool active);
+status_t EnqueueMessage(BMessage *message);
+status_t SetName(const char *name);
+status_t SetIcon(const uchar *icon);
+status_t SetMenu(const BMenu *menu, const BMessenger target);
diff --git a/docs/develop/input/Headers b/docs/develop/input/Headers
new file mode 100644
index 0000000000..db0057fe8a
--- /dev/null
+++ b/docs/develop/input/Headers
@@ -0,0 +1,51 @@
+Function Specifications
+
+
+Public BInputServerDevice class interface:
+
+ BInputServerDevice();
+virtual ~BInputServerDevice();
+
+virtual status_t InitCheck();
+virtual status_t SystemShuttingDown();
+
+virtual status_t Start(const char *device, void *cookie);
+virtual status_t Stop(const char *device, void *cookie);
+virtual status_t Control(const char *device, void *cookie, uint32 code, BMessage *message);
+
+status_t RegisterDevices(input_device_ref **devices);
+status_t UnregisterDevices(input_device_ref **devices);
+
+status_t EnqueueMessage(BMessage *message);
+
+status_t StartMonitoringDevice(const char *device);
+status_t StopMonitoringDevice(const char *device);
+}
+
+
+Public BInputServerFilter class interface:
+
+ BInputServerFilter();
+virtual ~BInputServerFilter();
+
+virtual status_t InitCheck();
+
+virtual filter_result Filter(BMessage *message, BList *outList);
+
+status_t GetScreenRegion(BRegion *region) const;
+
+}
+
+Public BInputServerMethod class interface:
+
+ BInputServerMethod(const char *name, const uchar *icon);
+virtual ~BInputServerMethod();
+
+virtual status_t MethodActivated(bool active);
+
+status_t EnqueueMessage(BMessage *message);
+
+status_t SetName(const char *name);
+status_t SetIcon(const uchar *icon);
+status_t SetMenu(const BMenu *menu, const BMessenger target);
+}
diff --git a/docs/develop/input/InputServer_functions.txt b/docs/develop/input/InputServer_functions.txt
new file mode 100644
index 0000000000..199a2c005d
--- /dev/null
+++ b/docs/develop/input/InputServer_functions.txt
@@ -0,0 +1,66 @@
+class InputServer
+{
+ InputServer(void);
+ ~InputServer(void);
+
+ ArgvReceived(long, char**);
+
+ InitKeyboardMouseStates(void)
+ InitFilters(void)
+ InitMethods(void)
+
+ QuitRequested(void)
+ ReadyToRun(void)
+ MessageReceived(BMessage*);
+
+ HandleSetMethod(BMessage*);
+ HandleGetSetMouseType(BMessage*, BMessage*);
+ HandleGetSetMouseAcceleration(BMessage*, BMessage*);
+ HandleGetSetKeyRepeatDelay(BMessage*, BMessage*);
+ HandleGetKeyInfo(BMessage*, BMessage*);
+ HandleGetModifiers(BMessage*, BMessage*);
+ HandleSetModifierKey(BMessage*, BMessage*);
+ HandleSetKeyboardLocks(BMessage*, BMessage*);
+ HandleGetSetMouseSpeed(BMessage*, BMessage*);
+ HandleSetMousePosition(BMessage*, BMessage*);
+ HandleGetSetMouseMap(BMessage*, BMessage*);
+ HandleGetKeyboardID(BMessage*, BMessage*);
+ HandleGetSetClickSpeed(BMessage*, BMessage*);
+ HandleGetSetKeyRepeatRate(BMessage*, BMessage*);
+ HandleGetSetKeyMap(BMessage*, BMessage*);
+ HandleFocusUnfocusIMAwareView(BMessage*, BMessage*);
+
+ EnqueueDeviceMessage(BMessage*);
+ EnqueueMethodMessage(BMessage*);
+ UnlockMethodQueue(void);
+ LockMethodQueue(void);
+ SetNextMethod(bool);
+ SetActiveMethod(_BMethodAddOn_*);
+ MethodReplicant(void);
+
+ EventLoop(void*);
+ EventLoopRunning(void);
+
+ DispatchEvents(BList*);
+ CacheEvents(BList*);
+ GetNextEvents(BList*);
+ FilterEvents(BList*);
+ SanitizeEvents(BList*);
+ MethodizeEvents(BList*, bool);
+
+ StartStopDevices(char const*, input_device_type, bool); // device's name, type, 0 or 1 for start or stop)
+ ControlDevices(char const*, input_device_type, unsigned long, BMessage*);
+
+ DoMouseAcceleration(long*, long*);
+ SetMousePos(long*, long*, long, long);
+ SetMousePos(long*, long*, BPoint);
+ SetMousePos(long*, long*, float, float);
+
+ SafeMode(void)
+
+private:
+ sEventLoopRunning
+ sSafeMode
+ fMouseState
+
+}
\ No newline at end of file
diff --git a/docs/develop/input/input_server threads b/docs/develop/input/input_server threads
new file mode 100644
index 0000000000..0f93d29338
--- /dev/null
+++ b/docs/develop/input/input_server threads
@@ -0,0 +1,12 @@
+Input_server threads
+
+input_server(10-Normal Priority)
+_input_server_event_loop_(103-Custom Priority)
+ScreenSaver Looper(10-Normal Priority)
+DevicesLooper(10-Normal Priority)
+w>Team Monitor(120-Real Time Priority)
+PS/2 Mouse(104-Custom Priority)
+AT Keyboard(104-Custom Priority)
+
+Legend:
+w> This signifies that the thread is spawned from a parent process. (most likely from the input_server)
\ No newline at end of file
diff --git a/docs/develop/input/intro to input_server b/docs/develop/input/intro to input_server
new file mode 100644
index 0000000000..c2fbce5a43
--- /dev/null
+++ b/docs/develop/input/intro to input_server
@@ -0,0 +1,149 @@
+
+
+
+Be Newsletter, Volume II, Issue 35
+
+
+
Be Newsletter, Volume II, Issue 35; September 2, 1998
+
+
+BE ENGINEERING INSIGHTS: An Introduction to the Input Server
+
By Hiroshi Lockheimer hiroshi@be.com
+One of the many upcoming changes in the BeOS is in the world
+of input devices and events. The Input Server, slated to
+debut in R4, is a server that deals with all things "input."
+Specifically, it serves three functions: manages input
+devices such as keyboards and mice; hosts a stream of events
+that those devices generate; and dispatches those events
+that make it through the stream.
+
+
+
+Managing Input Devices
+
+
+
The Input Server is a pretty dumb piece of software. (Cue to
+Alex: roll your eyes and say, "What do you expect Hiroshi,
+you wrote it.") On its own, the server doesn't know how a
+keyboard or a mouse works; it relies on BInputServerDevice
+add-ons to tell it.
+
+
+
BInputServerDevice is a base class from which all input
+device add-ons must derive. It provides the basic framework
+of virtual hook functions and non-virtual member functions
+that the Input Server uses to communicate with an add-on,
+and that the add-on can use to talk back to the server. To
+give a sneak peak of the API, some of the virtuals include
+InitCheck(), Start(), Stop(), and Control(). The common
+sequence of the life of an input device is this:
+
+
+
+- The Input Server loads an add-on and constructs its
+
BInputServerDevice-derived object.
+
+
+ - The Input Server calls
InitCheck() on the object. The
+ object determines whether it is capable of doing its job
+ -- that is, generating input events.
+
+
+ - This task may involve the object sniffing around for
+ hardware it can drive, or looking for a kernel device
+ driver in
/dev. If the object is happy, it registers with
+ the Input Server any input device(s) it finds, and
+ returns B_NO_ERROR. An error return causes the Input
+ Server to promptly destruct the object and unload the
+ add-on.
+
+
+ - At some point in time, someone will tell the input
+ devices registered with the Input Server to
Start(). The
+ system automatically starts keyboards and mice at boot
+ time. Any other type of device (an "undefined" input
+ device that the system doesn't have any special knowledge
+ about) can be started by an application using new API in
+ the Interface Kit.
+
+
+ - A registered device, whether it has been started or
+ not, may be
Control()-ed at any time. Think of Control()
+ as the ioctl() equivalent in input device parlance.
+ Examples of system-defined control messages include
+ keymap changes and mouse speed changes.
+
+
+
+Generating Input Events
+
+
+
Once a BInputServerDevice-derived object's input device is
+up and running, its primary task is to generate input
+events. These events are expressed as BMessages. For
+example, a keyboard input device will most likely generate
+B_KEY_DOWN and B_KEY_UP messages. Similarly, a mouse input
+device will probably generate B_MOUSE_UP, B_MOUSE_DOWN, and
+B_MOUSE_MOVED events.
+
+
+
There is nothing that prevents an input device from putting
+arbitrary data in any of the BMessages it generates. So, for
+example, a tablet may generate the aforementioned mouse
+events with extra data such as pressure and proximity. Any
+information packed into the BMessages is delivered
+unmolested by the input server.
+
+
+
When an event is ready to be shipped off, an input device
+enqueues it into the Input Server's event stream. Some
+BHandler (most likely a BView) down the line eventually
+receives the event by way of the usual hook functions such
+as KeyDown(), MouseDown(), and MouseMoved().
+
+
+
+The Input Event Stream
+
+
+
The Input Server's event stream is open for inspection and
+alteration by anyone in the system. This is achieved through
+another set of add-ons called BInputServerFilter. Like
+BInputServerDevice, BInputServerFilter is a base class for input filter add-ons to the Input Server.
+
+
+
An input filter add-on is privy to all the events that pass
+through the Input Server's event stream. A filter may
+inspect, alter, generate, or completely drop input events.
+It's similar in some ways to the Interface Kit's
+BMessageFilter, but much more low-level. A
+BInputServerFilter sees all events that exist in the system;
+BMessageFilters are associated with a specific BLooper and
+thus see only the events targeted to its BLooper. Also,
+filters in the Input Server can generate additional events
+in place of, or in addition to, the original input event
+that it was invoked with.
+
+
+
+Conclusion
+
+
+
With the introduction of loadable input device objects, the
+Input Server enables the BeOS to be used with a wide variety
+of input devices (and more than one of them at once too).
+And with the advent of input filters, the Input Server opens
+the door to a new class of tricks, hacks, and (gulp) pranks
+for the creative developer. It's going to be fun.
+
+
+
+
+
+
diff --git a/docs/develop/input/is_manager.fil b/docs/develop/input/is_manager.fil
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/docs/develop/input/is_server.fil b/docs/develop/input/is_server.fil
new file mode 100644
index 0000000000..22c55b04cd
--- /dev/null
+++ b/docs/develop/input/is_server.fil
@@ -0,0 +1,100 @@
+000124f0 T InputServer::InputServer(void)
+0001277c T InputServer::MessageReceived(BMessage *)
+00012e64 T InputServer::QuitRequested(void)
+0001306c T InputServer::InitKeyboardMouseStates(void)
+00013360 T InputServer::InitMethods(void)
+00013460 T InputServer::GetNextEvents(BList *)
+000135e8 T InputServer::DoMouseAcceleration(long *, long *)
+00013794 T InputServer::SanitizeEvents(BList *)
+00013ce0 T InputServer::MethodizeEvents(BList *, bool)
+00013ecc T InputServer::FilterEvents(BList *)
+000140dc T InputServer::CacheEvents(BList *)
+000144d0 T InputServer::DispatchEvents(BList *)
+00014800 T InputServer::HandleSetKeyboardLocks(BMessage *, BMessage *)
+000148e0 T InputServer::HandleSetModifierKey(BMessage *, BMessage *)
+00014ad0 T InputServer::HandleGetSetKeyMap(BMessage *, BMessage *)
+00014c3c T InputServer::HandleGetSetKeyRepeatDelay(BMessage *, BMessage *)
+00014d4c T InputServer::HandleGetSetKeyRepeatRate(BMessage *, BMessage *)
+00014e5c T InputServer::HandleGetSetMouseMap(BMessage *, BMessage *)
+00014f9c T InputServer::HandleGetSetMouseType(BMessage *, BMessage *)
+000150ac T InputServer::HandleGetSetMouseSpeed(BMessage *, BMessage *)
+000151bc T InputServer::HandleGetSetMouseAcceleration(BMessage *, BMessage *)
+000152cc T InputServer::HandleGetSetClickSpeed(BMessage *, BMessage *)
+000153dc T InputServer::HandleSetMousePosition(BMessage *, BMessage *)
+00015534 T InputServer::HandleFocusUnfocusIMAwareView(BMessage *, BMessage *)
+00015690 T InputServer::HandleSetMethod(BMessage *)
+000157f8 T InputServer::EventLoop(void *)
+00015b1c T InputServer::UnlockMethodQueue(void)
+00015b5c T InputServer::LockMethodQueue(void)
+00015ba4 T InputServer::HandleGetModifiers(BMessage *, BMessage *)
+00015bec T InputServer::HandleGetKeyInfo(BMessage *, BMessage *)
+00015c40 T InputServer::HandleGetKeyboardID(BMessage *, BMessage *)
+00015c88 T InputServer::SetActiveMethod(_BMethodAddOn_ *)
+00015d8c T InputServer::SetNextMethod(bool)
+00015e04 T InputServer::SetMousePos(long *, long *, float, float)
+00015ec4 T InputServer::SetMousePos(long *, long *, long, long)
+00015f14 T InputServer::SetMousePos(long *, long *, BPoint)
+00015fc8 T InputServer::InitFilters(void)
+00016008 T InputServer::EventLoopRunning(void)
+00016028 T InputServer::SafeMode(void)
+00016048 T InputServer::ControlDevices(char const *, input_device_type, unsigned long, BMessage *)
+0001612c T InputServer::StartStopDevices(char const *, input_device_type, bool)
+000161fc T InputServer::MethodReplicant(void) const
+0001620c T InputServer::EnqueueMethodMessage(BMessage *)
+000162ec T InputServer::EnqueueDeviceMessage(BMessage *)
+0001631c T InputServer::ReadyToRun(void)
+00016344 T InputServer::ArgvReceived(long, char **)
+0001647c T BInputServerDevice::_ReservedInputServerDevice4(void)
+00016484 T BInputServerDevice::_ReservedInputServerDevice3(void)
+0001648c T BInputServerDevice::_ReservedInputServerDevice2(void)
+00016494 T BInputServerDevice::_ReservedInputServerDevice1(void)
+0001649c T BInputServerDevice::StopMonitoringDevice(char const *)
+000164cc T BInputServerDevice::StartMonitoringDevice(char const *)
+000164fc T BInputServerDevice::EnqueueMessage(BMessage *)
+00016528 T BInputServerDevice::UnregisterDevices(input_device_ref **)
+00016550 T BInputServerDevice::RegisterDevices(input_device_ref **)
+00016578 T BInputServerDevice::Control(char const *, void *, unsigned long, BMessage *)
+00016584 T BInputServerDevice::Stop(char const *, void *)
+00016590 T BInputServerDevice::Start(char const *, void *)
+0001659c T BInputServerDevice::SystemShuttingDown(void)
+000165a8 T BInputServerDevice::InitCheck(void)
+000165b4 T BInputServerDevice::~BInputServerDevice(void)
+000165e4 T BInputServerDevice::BInputServerDevice(void)
+00016614 T BInputServerFilter::_ReservedInputServerFilter4(void)
+0001661c T BInputServerFilter::_ReservedInputServerFilter3(void)
+00016624 T BInputServerFilter::_ReservedInputServerFilter2(void)
+0001662c T BInputServerFilter::_ReservedInputServerFilter1(void)
+00016634 T BInputServerFilter::GetScreenRegion(BRegion *) const
+00016698 T BInputServerFilter::Filter(BMessage *, BList *)
+000166a4 T BInputServerFilter::InitCheck(void)
+000166b0 T BInputServerFilter::~BInputServerFilter(void)
+000166e0 T BInputServerFilter::BInputServerFilter(void)
+00016710 T BInputServerMethod::_ReservedInputServerMethod4(void)
+00016718 T BInputServerMethod::_ReservedInputServerMethod3(void)
+00016720 T BInputServerMethod::_ReservedInputServerMethod2(void)
+00016728 T BInputServerMethod::_ReservedInputServerMethod1(void)
+00016730 T BInputServerMethod::SetMenu(BMenu const *, BMessenger)
+000167ac T BInputServerMethod::SetIcon(unsigned char const *)
+000167d4 T BInputServerMethod::SetName(char const *)
+000167fc T BInputServerMethod::EnqueueMessage(BMessage *)
+00016828 T BInputServerMethod::MethodActivated(bool)
+00016834 T BInputServerMethod::~BInputServerMethod(void)
+00016864 T BInputServerMethod::BInputServerMethod(char const *, unsigned char const *)
+00018834 T MethodReplicant::SendToInputServer(BMessage *)
+00019d98 W InputServer type_info function
+00019ddc W InputServer::~InputServer(void)
+00019e68 W BInputServerDevice type_info function
+00019ea0 W BInputServerFilter type_info function
+00019ed8 W BInputServerMethod type_info function
+0001b000 R kInputServerSignature
+0001cd34 D InputServer::sSafeMode
+0001cd35 D InputServer::sEventLoopRunning
+0001fb60 W InputServer virtual table
+0001fce0 W BInputServerDevice virtual table
+0001fd40 W BInputServerFilter virtual table
+0001fd80 W BInputServerMethod virtual table
+00024580 B InputServer::fMouseState
+000245c0 B InputServer type_info node
+000245ec B BInputServerMethod type_info node
+00024620 B BInputServerFilter type_info node
+00024728 B BInputServerDevice type_info node
diff --git a/docs/develop/input/is_server2.fil b/docs/develop/input/is_server2.fil
new file mode 100644
index 0000000000..896ff19cd1
--- /dev/null
+++ b/docs/develop/input/is_server2.fil
@@ -0,0 +1,100 @@
+InputServer::InputServer(void)
+InputServer::MessageReceived(BMessage
+InputServer::QuitRequested(void)
+InputServer::InitKeyboardMouseStates(void)
+InputServer::InitMethods(void)
+InputServer::GetNextEvents(BList
+InputServer::DoMouseAcceleration(long
+InputServer::SanitizeEvents(BList
+InputServer::MethodizeEvents(BList
+InputServer::FilterEvents(BList
+InputServer::CacheEvents(BList
+InputServer::DispatchEvents(BList
+InputServer::HandleSetKeyboardLocks(BMessage
+InputServer::HandleSetModifierKey(BMessage
+InputServer::HandleGetSetKeyMap(BMessage
+InputServer::HandleGetSetKeyRepeatDelay(BMessage
+InputServer::HandleGetSetKeyRepeatRate(BMessage
+InputServer::HandleGetSetMouseMap(BMessage
+InputServer::HandleGetSetMouseType(BMessage
+InputServer::HandleGetSetMouseSpeed(BMessage
+InputServer::HandleGetSetMouseAcceleration(BMessage
+InputServer::HandleGetSetClickSpeed(BMessage
+InputServer::HandleSetMousePosition(BMessage
+InputServer::HandleFocusUnfocusIMAwareView(BMessage
+InputServer::HandleSetMethod(BMessage
+InputServer::EventLoop(void
+InputServer::UnlockMethodQueue(void)
+InputServer::LockMethodQueue(void)
+InputServer::HandleGetModifiers(BMessage
+InputServer::HandleGetKeyInfo(BMessage
+InputServer::HandleGetKeyboardID(BMessage
+InputServer::SetActiveMethod(_BMethodAddOn_
+InputServer::SetNextMethod(bool)
+InputServer::SetMousePos(long
+InputServer::SetMousePos(long
+InputServer::SetMousePos(long
+InputServer::InitFilters(void)
+InputServer::EventLoopRunning(void)
+InputServer::SafeMode(void)
+InputServer::ControlDevices(char
+InputServer::StartStopDevices(char
+InputServer::MethodReplicant(void)
+InputServer::EnqueueMethodMessage(BMessage
+InputServer::EnqueueDeviceMessage(BMessage
+InputServer::ReadyToRun(void)
+InputServer::ArgvReceived(long,
+BInputServerDevice::_ReservedInputServerDevice4(void)
+BInputServerDevice::_ReservedInputServerDevice3(void)
+BInputServerDevice::_ReservedInputServerDevice2(void)
+BInputServerDevice::_ReservedInputServerDevice1(void)
+BInputServerDevice::StopMonitoringDevice(char
+BInputServerDevice::StartMonitoringDevice(char
+BInputServerDevice::EnqueueMessage(BMessage
+BInputServerDevice::UnregisterDevices(input_device_ref
+BInputServerDevice::RegisterDevices(input_device_ref
+BInputServerDevice::Control(char
+BInputServerDevice::Stop(char
+BInputServerDevice::Start(char
+BInputServerDevice::SystemShuttingDown(void)
+BInputServerDevice::InitCheck(void)
+BInputServerDevice::~BInputServerDevice(void)
+BInputServerDevice::BInputServerDevice(void)
+BInputServerFilter::_ReservedInputServerFilter4(void)
+BInputServerFilter::_ReservedInputServerFilter3(void)
+BInputServerFilter::_ReservedInputServerFilter2(void)
+BInputServerFilter::_ReservedInputServerFilter1(void)
+BInputServerFilter::GetScreenRegion(BRegion
+BInputServerFilter::Filter(BMessage
+BInputServerFilter::InitCheck(void)
+BInputServerFilter::~BInputServerFilter(void)
+BInputServerFilter::BInputServerFilter(void)
+BInputServerMethod::_ReservedInputServerMethod4(void)
+BInputServerMethod::_ReservedInputServerMethod3(void)
+BInputServerMethod::_ReservedInputServerMethod2(void)
+BInputServerMethod::_ReservedInputServerMethod1(void)
+BInputServerMethod::SetMenu(BMenu
+BInputServerMethod::SetIcon(unsigned
+BInputServerMethod::SetName(char
+BInputServerMethod::EnqueueMessage(BMessage
+BInputServerMethod::MethodActivated(bool)
+BInputServerMethod::~BInputServerMethod(void)
+BInputServerMethod::BInputServerMethod(char
+MethodReplicant::SendToInputServer(BMessage
+InputServer
+InputServer::~InputServer(void)
+BInputServerDevice
+BInputServerFilter
+BInputServerMethod
+kInputServerSignature
+InputServer::sSafeMode
+InputServer::sEventLoopRunning
+InputServer
+BInputServerDevice
+BInputServerFilter
+BInputServerMethod
+InputServer::fMouseState
+InputServer
+BInputServerMethod
+BInputServerFilter
+BInputServerDevice
diff --git a/docs/develop/input/miscellaneous b/docs/develop/input/miscellaneous
new file mode 100644
index 0000000000..1b5746fa09
--- /dev/null
+++ b/docs/develop/input/miscellaneous
@@ -0,0 +1,18 @@
+MethodReplicant::SendToInputServer(BMessage
+InputServer
+InputServer::~InputServer(void)
+BInputServerDevice
+BInputServerFilter
+BInputServerMethod
+kInputServerSignature
+InputServer::sSafeMode
+InputServer::sEventLoopRunning
+InputServer
+BInputServerDevice
+BInputServerFilter
+BInputServerMethod
+InputServer::fMouseState
+InputServer
+BInputServerMethod
+BInputServerFilter
+BInputServerDevice
diff --git a/docs/develop/input/objdump-inputserver b/docs/develop/input/objdump-inputserver
new file mode 100644
index 0000000000..06ffc764ab
--- /dev/null
+++ b/docs/develop/input/objdump-inputserver
@@ -0,0 +1,104 @@
+00000000 l df *ABS* 00000000 InputServer.cpp
+00000000 l df *ABS* 00000000 InputServerDevice.cpp
+00000000 l df *ABS* 00000000 InputServerFilter.cpp
+00000000 l df *ABS* 00000000 InputServerMethod.cpp
+000245c0 g O .bss 0000000c InputServer type_info node
+000164cc g F .text 0000002f BInputServerDevice::StartMonitoringDevice(char const *)
+000245ec g O .bss 0000000c BInputServerMethod type_info node
+0001fce0 w O .data 00000058 BInputServerDevice virtual table
+00016584 g F .text 00000009 BInputServerDevice::Stop(char const *, void *)
+00016550 g F .text 00000026 BInputServerDevice::RegisterDevices(input_device_ref **)
+00012e64 g F .text 00000207 InputServer::QuitRequested(void)
+00024580 g O .bss 00000020 InputServer::fMouseState
+00016720 g F .text 00000007 BInputServerMethod::_ReservedInputServerMethod2(void)
+000151bc g F .text 0000010f InputServer::HandleGetSetMouseAcceleration(BMessage *, BMessage *)
+0001620c g F .text 000000df InputServer::EnqueueMethodMessage(BMessage *)
+00014f9c g F .text 0000010f InputServer::HandleGetSetMouseType(BMessage *, BMessage *)
+00016008 g F .text 0000001d InputServer::EventLoopRunning(void)
+00015b1c g F .text 0000003e InputServer::UnlockMethodQueue(void)
+0001612c g F .text 000000cf InputServer::StartStopDevices(char const *, input_device_type, bool)
+000157f8 g F .text 00000323 InputServer::EventLoop(void *)
+00018834 g F .text 00000157 MethodReplicant::SendToInputServer(BMessage *)
+0001b000 g O .rodata 00000022 kInputServerSignature
+00015690 g F .text 00000165 InputServer::HandleSetMethod(BMessage *)
+00016578 g F .text 00000009 BInputServerDevice::Control(char const *, void *, unsigned long, BMessage *)
+00024620 g O .bss 00000008 BInputServerFilter type_info node
+000166b0 g F .text 0000002f BInputServerFilter::~BInputServerFilter(void)
+00014c3c g F .text 0000010f InputServer::HandleGetSetKeyRepeatDelay(BMessage *, BMessage *)
+00013ce0 g F .text 000001ea InputServer::MethodizeEvents(BList *, bool)
+0001cd35 g O .data 00000001 InputServer::sEventLoopRunning
+00015bec g F .text 00000053 InputServer::HandleGetKeyInfo(BMessage *, BMessage *)
+00015b5c g F .text 00000048 InputServer::LockMethodQueue(void)
+00016834 g F .text 0000002d BInputServerMethod::~BInputServerMethod(void)
+00016494 g F .text 00000007 BInputServerDevice::_ReservedInputServerDevice1(void)
+0001631c g F .text 00000026 InputServer::ReadyToRun(void)
+0001fd40 w O .data 00000040 BInputServerFilter virtual table
+00015d8c g F .text 00000077 InputServer::SetNextMethod(bool)
+0001306c g F .text 000002f2 InputServer::InitKeyboardMouseStates(void)
+00013360 g F .text 000000ff InputServer::InitMethods(void)
+00019ddc w F .text 00000045 InputServer::~InputServer(void)
+0001662c g F .text 00000007 BInputServerFilter::_ReservedInputServerFilter1(void)
+0001649c g F .text 0000002f BInputServerDevice::StopMonitoringDevice(char const *)
+0001fb60 w O .data 00000180 InputServer virtual table
+00015ba4 g F .text 00000045 InputServer::HandleGetModifiers(BMessage *, BMessage *)
+000148e0 g F .text 000001ef InputServer::HandleSetModifierKey(BMessage *, BMessage *)
+000165a8 g F .text 00000009 BInputServerDevice::InitCheck(void)
+00013794 g F .text 00000549 InputServer::SanitizeEvents(BList *)
+00016710 g F .text 00000007 BInputServerMethod::_ReservedInputServerMethod4(void)
+000166e0 g F .text 00000023 BInputServerFilter::BInputServerFilter(void)
+000167ac g F .text 00000027 BInputServerMethod::SetIcon(unsigned char const *)
+00014800 g F .text 000000dd InputServer::HandleSetKeyboardLocks(BMessage *, BMessage *)
+00019d98 w F .text 00000041 InputServer type_info function
+000165b4 g F .text 0000002f BInputServerDevice::~BInputServerDevice(void)
+00016528 g F .text 00000026 BInputServerDevice::UnregisterDevices(input_device_ref **)
+000165e4 g F .text 0000002d BInputServerDevice::BInputServerDevice(void)
+00014e5c g F .text 0000013f InputServer::HandleGetSetMouseMap(BMessage *, BMessage *)
+000135e8 g F .text 000001ab InputServer::DoMouseAcceleration(long *, long *)
+00015ec4 g F .text 0000004e InputServer::SetMousePos(long *, long *, long, long)
+00015c88 g F .text 00000103 InputServer::SetActiveMethod(_BMethodAddOn_ *)
+00019ed8 w F .text 00000041 BInputServerMethod type_info function
+0001277c g F .text 000006e5 InputServer::MessageReceived(BMessage *)
+000162ec g F .text 0000002e InputServer::EnqueueDeviceMessage(BMessage *)
+000167d4 g F .text 00000027 BInputServerMethod::SetName(char const *)
+00016624 g F .text 00000007 BInputServerFilter::_ReservedInputServerFilter2(void)
+00016028 g F .text 0000001d InputServer::SafeMode(void)
+00016590 g F .text 00000009 BInputServerDevice::Start(char const *, void *)
+00016484 g F .text 00000007 BInputServerDevice::_ReservedInputServerDevice3(void)
+00016614 g F .text 00000007 BInputServerFilter::_ReservedInputServerFilter4(void)
+00016728 g F .text 00000007 BInputServerMethod::_ReservedInputServerMethod1(void)
+0001648c g F .text 00000007 BInputServerDevice::_ReservedInputServerDevice2(void)
+0001cd34 g O .data 00000001 InputServer::sSafeMode
+00016698 g F .text 0000000c BInputServerFilter::Filter(BMessage *, BList *)
+000144d0 g F .text 0000032e InputServer::DispatchEvents(BList *)
+000140dc g F .text 000003f4 InputServer::CacheEvents(BList *)
+000124f0 g F .text 0000028b InputServer::InputServer(void)
+0001647c g F .text 00000007 BInputServerDevice::_ReservedInputServerDevice4(void)
+00016828 g F .text 00000009 BInputServerMethod::MethodActivated(bool)
+00016344 g F .text 00000079 InputServer::ArgvReceived(long, char **)
+000150ac g F .text 0000010f InputServer::HandleGetSetMouseSpeed(BMessage *, BMessage *)
+00013460 g F .text 00000186 InputServer::GetNextEvents(BList *)
+000153dc g F .text 00000155 InputServer::HandleSetMousePosition(BMessage *, BMessage *)
+0001661c g F .text 00000007 BInputServerFilter::_ReservedInputServerFilter3(void)
+00019e68 w F .text 00000035 BInputServerDevice type_info function
+00016864 g F .text 00000097 BInputServerMethod::BInputServerMethod(char const *, unsigned char const *)
+000164fc g F .text 00000029 BInputServerDevice::EnqueueMessage(BMessage *)
+00015fc8 g F .text 0000003f InputServer::InitFilters(void)
+000166a4 g F .text 00000009 BInputServerFilter::InitCheck(void)
+000167fc g F .text 00000029 BInputServerMethod::EnqueueMessage(BMessage *)
+00013ecc g F .text 0000020d InputServer::FilterEvents(BList *)
+000161fc g F .text 00000010 InputServer::MethodReplicant(void) const
+00015c40 g F .text 00000046 InputServer::HandleGetKeyboardID(BMessage *, BMessage *)
+000152cc g F .text 0000010f InputServer::HandleGetSetClickSpeed(BMessage *, BMessage *)
+0001659c g F .text 00000009 BInputServerDevice::SystemShuttingDown(void)
+0001fd80 w O .data 00000068 BInputServerMethod virtual table
+00024728 g O .bss 00000008 BInputServerDevice type_info node
+00016730 g F .text 0000007c BInputServerMethod::SetMenu(BMenu const *, BMessenger)
+00016048 g F .text 000000e3 InputServer::ControlDevices(char const *, input_device_type, unsigned long, BMessage *)
+00015534 g F .text 0000015b InputServer::HandleFocusUnfocusIMAwareView(BMessage *, BMessage *)
+00019ea0 w F .text 00000035 BInputServerFilter type_info function
+00016718 g F .text 00000007 BInputServerMethod::_ReservedInputServerMethod3(void)
+00015f14 g F .text 000000b4 InputServer::SetMousePos(long *, long *, BPoint)
+00014d4c g F .text 0000010f InputServer::HandleGetSetKeyRepeatRate(BMessage *, BMessage *)
+00014ad0 g F .text 0000016c InputServer::HandleGetSetKeyMap(BMessage *, BMessage *)
+00015e04 g F .text 000000bf InputServer::SetMousePos(long *, long *, float, float)
+00016634 g F .text 00000061 BInputServerFilter::GetScreenRegion(BRegion *) const
diff --git a/docs/develop/kernel/arch_vm_translation_map_x86 b/docs/develop/kernel/arch_vm_translation_map_x86
new file mode 100644
index 0000000000..c95b0c2a5f
--- /dev/null
+++ b/docs/develop/kernel/arch_vm_translation_map_x86
@@ -0,0 +1,72 @@
+static void init_pdentry(pdentry *e)
+ Sets e's value to 0.
+
+static void init_ptentry(ptentry *e)
+ Sets e's value to 0.
+
+static void _update_all_pgdirs(int index, pdentry e)
+ For every entry in the translation map, set the index'th entry to e.
+
+static int lock_tmap(vm_translation_map *map)
+ Locks the map; if we are the only ones, sets invalidated page count to 0.
+
+static int unlock_tmap(vm_translation_map *map)
+ unlocks the map; if no one else has it, call flush_tmap
+
+static void destroy_tmap(vm_translation_map *map)
+ Iterate over the entries in the tmap list, removing map when found. Frees the pages associated with this map.
+
+static void put_pgtable_in_pgdir(pdentry *e, addr pgtable_phys, int attributes)
+ Populates the pdentry with pgtable_phys and attributes
+
+static int map_tmap(vm_translation_map *map, addr va, addr pa, unsigned int attributes)
+ Allocates, if necessary, a page table entry. Gets the page for the page table entry (new or not), populates the page tabel entry with pa and attributes. Puts back the page table entry. Updates the pages to invalidate list.
+
+static int unmap_tmap(vm_translation_map *map, addr start, addr end)
+ Loops over the pagetable, finding the page that is present that holds this address. Gets it, and marks the page as not present. Replaces the page and updates the pages to invalidate list.
+
+static int query_tmap(vm_translation_map *map, addr va, addr *out_physical, unsigned int *out_flags)
+ Finds the page table's entry for this virtual address. Returns the physical address and flags.
+
+static addr get_mapped_size_tmap(vm_translation_map *map)
+ Returns map_count.
+
+static int protect_tmap(vm_translation_map *map, addr base, addr top, unsigned int attributes)
+ Unimplemented.
+
+static int clear_flags_tmap(vm_translation_map *map, addr va, unsigned int flags)
+ Finds the PTE and clears the requested flags.
+
+static void flush_tmap(vm_translation_map *map)
+ Invalidates the TLBs. If too many are in the list, all of the TLBs are invalidated. If not, a list is invalidated.
+
+static int map_iospace_chunk(addr va, addr pa)
+ Creates 1024 page table entries, for io.
+
+static int get_physical_page_tmap(addr pa, addr *va, int flags)
+ Looks to see if pa is already mapped. If so, return its virtual address in va. If not, find a place to map it and do so.
+
+static int put_physical_page_tmap(addr va)
+ Releases a reference to a "checked out" virtual mapping
+
+int vm_translation_map_create(vm_translation_map *new_map, bool kernel)
+ Sets up new_map, allocating memory and setting its initial state.
+
+int vm_translation_map_module_init(kernel_args *ka)
+ Clears the bottom 2 gig of memory's page mapping. Allocates space for page maps. Initializes data structures. Puts the page tables in the kernel's pagedir.
+
+void vm_translation_map_module_init_post_sem(kernel_args *ka)
+ Initializes this module's semaphores and mutexes.
+
+int vm_translation_map_module_init2(kernel_args *ka)
+ Creates anonymous regions for the kernel pagedir, physical page mappings, iospaces' virtual chunk descriptors and iospaces' page tables. Creates a null region for iospace.
+
+int vm_translation_map_quick_map(kernel_args *ka, addr va, addr pa, unsigned int attributes, addr (get_free_page)(kernel_args *))
+ Maps a page, ignoring already set up info.
+
+static int vm_translation_map_quick_query(addr va, addr *out_physical)
+ Gets the physical address for a page.
+
+addr vm_translation_map_get_pgdir(vm_translation_map *map)
+ Returns the pagedirectory structure.
+
diff --git a/docs/develop/kernel/arch_vm_x86 b/docs/develop/kernel/arch_vm_x86
new file mode 100644
index 0000000000..8b8a943195
--- /dev/null
+++ b/docs/develop/kernel/arch_vm_x86
@@ -0,0 +1,11 @@
+int arch_vm_init (kernel_args *ka)
+ First round of initialization; does nothing.
+
+int arch_vm_init2 (kernel_args *ka)
+ Marks the bios and dma ranges as "in use".
+
+int arch_vm_init_endvm (kernel_args *ka)
+ Maps the dma region into kernel space
+
+void arch_vm_aspace_swap(vm_address_space *aspace)
+ Calls i386_swap_pgdir
\ No newline at end of file
diff --git a/docs/develop/kernel/vm b/docs/develop/kernel/vm
new file mode 100644
index 0000000000..324e4c0f87
--- /dev/null
+++ b/docs/develop/kernel/vm
@@ -0,0 +1,210 @@
+Variables
+
+static vm_address_space *kernel_aspace;
+static region_id next_region_id;
+static void *region_table;
+static sem_id region_hash_sem;
+static aspace_id next_aspace_id;
+static void *aspace_table;
+static sem_id aspace_hash_sem;
+static int max_commit;
+static spinlock_t max_commit_lock;
+
+Functions
+
+static int region_compare(void *_r, const void *key)
+ Compares _r (a vm_region) to key to see if their id's are the same. If so, return 0, else return -1
+
+static unsigned int region_hash(void *_r, const void *key, unsigned int range)
+ If _r is null, return key (a region_id) mod range, else return _r's id mod range.
+
+static int aspace_compare(void *_a, const void *key)
+ Compares _a (an address space) to key to see if their id's are the same. If so, return 0, else return -1
+
+static unsigned int aspace_hash(void *_a, const void *key, unsigned int range)
+ If _a is null, return key (an aspace_id) mod range, else return _a's id mod range.
+
+vm_address_space *vm_get_aspace_by_id(aspace_id aid)
+ Does a hash lookup on aid to find a vm_address_space struct. Increments its reference count and returns it.
+
+vm_region *vm_get_region_by_id(region_id rid)
+ Does a hash lookup on rid to find a vm_region. Increments its reference count and returns it.
+
+region_id vm_find_region_by_name(aspace_id aid, const char *name)
+ Finds this address space's structure. Iterates over the region list, looking for a match for name. vm_put_aspace's the address space.
+
+static vm_region *_vm_create_region_struct(vm_address_space *aspace, const char *name, int wiring, int lock)
+ Allocates space for a region and its name. Populates the name. Gets a new region id and assigns it. Sets map to the address space's virtual map.
+
+static int find_and_insert_region_slot(vm_virtual_map *map, addr start, addr size, addr end, int addr_type, vm_region *region)
+ Loops over the map's region list until it finds where this region should be inserted. If addr_type is any address, find any spot where it will fit and set the region up to start at the end of the previous one + 1. If we are searching for an exact address, see if that area is free and if so, use it. Increment map's change count.
+
+
+static int map_backing_store(vm_address_space *aspace, vm_store *store, void **vaddr,off_t offset, addr size, int addr_type, int wiring, int lock, int mapping, vm_region **_region, const char *region_name)
+ Creates a region structure for this address space, name, wiring and lock. If this is a private map, create a new store, cache and cache_ref for private copies of pages. If the store's commited size is too small, ask the store to attempt to commit more. Aquire a reference to the cache_ref. Ensure that no one is deleting this address space; if they are, exit with an error. Insert this region into the address space. Attaches the cache to the region. Inserts the region into the region hash table. Adds a reference to the address space. Releases the cache_ref reference.
+
+region_id user_vm_create_anonymous_region(char *uname, void **uaddress, int addr_type, addr size, int wiring, int lock)
+ Does some safety checking, copies the name and address to kernel space, calls vm_create_anonymous_region, then copies the return result to uaddress.
+
+region_id vm_create_anonymous_region(aspace_id aid, char *name, void **address, int addr_type, addr size, int wiring, int lock)
+ Gets the address space structure. Creates an anonymous store object, a (temporary) cache and a cache_ref. Acquires a ref to the cache_ref. Calls map_backing_store for this address and size. Releases the cache_ref. If wiring is lazy, do nothing. If wiring is wired, calls soft_fault to simulate a fault and force the mapping to occur. If the wiring is "wired already", i.e. we cheated at boot time to make this happen, then find the pages and call vm_cache_insert_page to insert the pages into the cache. If the wiring is contiguous, allocate the pages and put them into the cache.
+
+
+region_id vm_map_physical_memory(aspace_id aid, char *name, void **address, int addr_type, addr size, int lock, addr phys_addr)
+ Get the address space structure. Create a device store object, a cache and a cache_ref. Acquire a reference for the cache_ref. map backing store to this space and size. release the reference to the cache_ref.
+
+region_id vm_create_null_region(aspace_id aid, char *name, void **address, int addr_type, addr size)
+ Get the address space structure. Create a null store object, a cache and a cache_ref. Acquire a reference for the cache_ref. map backing store to this space and size. release the reference to the cache_ref.
+
+static region_id _vm_map_file(aspace_id aid, char *name, void **address, int addr_type,addr size, int lock, int mapping, const char *path, off_t offset, bool kernel)
+ Get the address space structure. Get the vnode from the path. If this cache doesn't already exist:
+ create a vnode store object, a cache and a cache_ref. Acquire a reference for the cache_ref. set the cache_ptr to this cache_ref, and keep retrying until it works. release the reference to the cache_ref.
+ Acquire a ref to the cache_ref. map backing store, release the ref and put the address space.
+
+region_id vm_map_file(aspace_id aid, char *name, void **address, int addr_type, addr size, int lock, int mapping, const char *path, off_t offset)
+ Convenience function - calls _vm_map_file with a kernel param of true.
+
+region_id user_vm_map_file(char *uname, void **uaddress, int addr_type, addr size, int lock, int mapping, const char *upath, off_t offset)
+ Sanity checks the name, address and path. Copies those into kernel space and calls _vm_map_file with a kernel param of false.
+
+region_id user_vm_clone_region(char *uname, void **uaddress, int addr_type, region_id source_region, int mapping, int lock)
+ Sanity checks the name and address. Copies those into kernel space and calls vm_clone_region.
+
+region_id vm_clone_region(aspace_id aid, char *name, void **address, int addr_type, region_id source_region, int mapping, int lock)
+ Gets the address space and region structures. maps backing store and returns.
+
+static int __vm_delete_region(vm_address_space *aspace, vm_region *region)
+ If the region's address space matches aspace, put_region it.
+
+static int _vm_delete_region(vm_address_space *aspace, region_id rid)
+ Gets the region, calls __vm_delete_region, then puts the region.
+
+int vm_delete_region(aspace_id aid, region_id rid)
+ Gets the address space. Calls _vm_delete_region, puts the address space and returns.
+
+static void _vm_put_region(vm_region *region, bool aspace_locked)
+ Check to see if there are still references to this region. If not, remove it from the global list and return. Remove the region from the adress space's region list. Remove the region from the vm_cache. Unmap it from the translation map.
+
+void vm_put_region(vm_region *region)
+ Calls _vm_put_region with locked=false.
+
+int user_vm_get_region_info(region_id id, vm_region_info *uinfo)
+ Calls vm_get_region_info after sanity checking the vm_region_info pointer.
+
+int vm_get_region_info(region_id id, vm_region_info *info)
+ Fills in the vm_region_info structure with id, base, size, lock, wiring and name.
+
+int vm_get_page_mapping(aspace_id aid, addr vaddr, addr *paddr)
+ Returns a physical address, given a virtual one.
+
+static void display_mem(int argc, char **argv)
+ Displays a value in memory.
+
+static void dump_cache_ref(int argc, char **argv)
+ Dumps a cache ref to debugging terminal
+
+static const char *page_state_to_text(int state)
+ Converts a state enum to a descriptive string.
+
+static void dump_cache(int argc, char **argv)
+ Dumps a particular cache entry.
+
+static void _dump_region(vm_region *region)
+ Dumps a particular region
+
+static void dump_region(int argc, char **argv)
+ Finds region by id and dumps it.
+
+static void dump_region_list(int argc, char **argv)
+ Dumps info about every region.
+
+static void _dump_aspace(vm_address_space *aspace)
+ Dumps data about an address space.
+
+static void dump_aspace(int argc, char **argv)
+ Finds an address space by ID and dumps it.
+
+static void dump_aspace_list(int argc, char **argv)
+ Dumps data about every address space.
+
+vm_address_space *vm_get_kernel_aspace(void)
+ Returns a pointer to the kernel address space structure.
+
+aspace_id vm_get_kernel_aspace_id(void)
+ Returns the kernel's address space id.
+
+vm_address_space *vm_get_current_user_aspace(void)
+ Gets the current user address space, given an id.
+
+aspace_id vm_get_current_user_aspace_id(void)
+ Uses the thread structure to get the current address space id.
+
+void vm_put_aspace(vm_address_space *aspace)
+ Removes a reference to the adress space. If it is the last one, destory the aspace.
+
+aspace_id vm_create_aspace(const char *name, addr base, addr size, bool kernel)
+ Allocate space for the structure and the name. Set default state. Creates a translation map. Initializes the virtual map and adds the structure to the global address space list.
+
+int vm_delete_aspace(aspace_id aid)
+ Gets the aspace struct from the id. If someone is already deleting, bail out. Put all of the regions, and put the aspace twice to cause it to be deleted.
+
+int vm_aspace_walk_start(struct hash_iterator *i)
+ calls open_hash on the aspace table.
+
+vm_address_space *vm_aspace_walk_next(struct hash_iterator *i)
+ Get the next address space in the hash list.
+
+static int vm_thread_dump_max_commit(void *unused)
+ Calls the unused function, then loops forever, printing the max_commit changes. Weird.
+
+int vm_init(kernel_args *ka)
+ Calls translation_map_module_init, and arch_vm_init. Initializes its globals, maps in the new heap and initializes it. Initializes the page list and the cache list. Creates the region and address space hash maps. Creates the kernel address space. Calls arch_vm_init2 and vm_page_init2. Allocates vm space for the stuff that the boot loader already had (heap, kernel read only, kernel read write, bootdir and the kstacks. Calls arch_vm_init_endvm. Adds commands to the debugger.
+
+int vm_init_postsem(kernel_args *ka)
+ Calls vm_translation_map_module_init_post_sem, creates the vm locking semaphores, and calls heap_init_postsem.
+
+int vm_init_postthread(kernel_args *ka)
+ Creates a max_commit_thread, calling vm_thread_dump_max_commit.
+
+int vm_page_fault(addr address, addr fault_address, bool is_write, bool is_user, addr *newip)
+ Calls vm_soft_fault. If that fails then checks to see if there is a fault handler for this case. If so, ensures that it is called. If there is no such case, kernel_panic (is this a good thing?)
+
+static int vm_soft_fault(addr address, bool is_write, bool is_user)
+ Sanity checks the address, determining if it is kernel or user land and getting the appropriate address space. Looks up the region from the aspace's map and the address. On failure, fail. Checks permissions. Finds the regions's cache ref; if there is a fault function for that cache_ref, invoke it and return with the error that the fault function returns.
+ Otherwise, iterates over the cache chain:
+ If the page is found in the current cache, set that page as busy and stop iterating.
+ Otherwise, insert a dummy page in this cache (to keep other threads of the same process from chasing us in fault land)
+ See if this cache's store has a "has_page" function. If so, call it. If it finds the page (meaning that the page is in this cache's storage), allocate a new physical page, read the data into the page and stop iterating.
+ If we didn't find a cache, pick one (if we are in write mode, the top, if not, the deepest cache).
+ If we don't have a page at this point, make a new one and insert it into the cache. Replace the dummy page, if any, with our new page.
+ If this is a writable page and we are not in the topmost cache, we need another physical page for writes. Find the original page and copy it to the new page. Replace the dummy page, if any, with our new page.
+ Ensure that the address region is still legit.
+ Map the new page into the address space.
+ Replace the dummy page, if any, with our new page.
+ Set the page to active. Release all locks.
+
+
+static vm_region *vm_virtual_map_lookup(vm_virtual_map *map, addr address)
+ Walk the region list of this map, looking for a region containing this address and return it.
+
+int vm_get_physical_page(addr paddr, addr *vaddr, int flags)
+ Get the physical page for this virtual address.
+
+int vm_put_physical_page(addr vaddr)
+ Put the physical page for this virtual address.
+
+void vm_increase_max_commit(addr delta)
+ Lock everything, increase max_commit, then unlock everything.
+
+int user_memcpy(void *to, const void *from, size_t size)
+ Calls the arch_ version.
+
+int user_strcpy(char *to, const char *from)
+ Calls the arch_ version.
+
+int user_strncpy(char *to, const char *from, size_t size)
+ Calls the arch_ version.
+
+int user_memset(void *s, char c, size_t count)
+ Calls the arch_ version.
+
diff --git a/docs/develop/kernel/vm_cache b/docs/develop/kernel/vm_cache
new file mode 100644
index 0000000000..568a9cf748
--- /dev/null
+++ b/docs/develop/kernel/vm_cache
@@ -0,0 +1,41 @@
+Variables
+static void *page_cache_table
+
+static spinlock_t page_cache_table_lock
+
+static int page_compare_func(void *_p, const void *_key)
+ Compares a vm_page's cache_ref and offset to those of key. Returns 0 on match, -1 otherwise.
+
+static unsigned int page_hash_func(void *_p, const void *_key, unsigned int range)
+ If p is not null, use it otherwise use key; computes a hash value for offset and reference.
+
+int vm_cache_init(kernel_args *ka)
+ Calls hash_init, sets page_cache_table_lock to unlocked and returns 0.
+
+vm_cache *vm_cache_create(vm_store *store)
+ Allocates a vm_cache structure and populates with 0's and NULLs (except for store).
+
+vm_cache_ref *vm_cache_ref_create(vm_cache *cache)
+ Allocates a vm_cache_ref, setting it to point to the passed in cache. It initalizes the references lock and returns.
+
+void vm_cache_acquire_ref(vm_cache_ref *cache_ref, bool acquire_store_ref)
+ If the cache_ref is null, panic. Otherwise, if we are to aquire a reference and there is an aquire reference function for this cache's store, call that function. Finally, increment this cache references' count.
+
+void vm_cache_release_ref(vm_cache_ref *cache_ref)
+ If this cache_ref is the last reference to its cache, we call destroy on the store, remove all of its pages from the page_cache_table and set the state of them to free, increase max_commit by the size of the now freed storage, remove the reference to the original cache, destroy the reference's mutex and its space.
+ Otherwise, we call the store's release ref and return.
+
+vm_page *vm_cache_lookup_page(vm_cache_ref *cache_ref, off_t offset)
+ Lock the page_cache_table_lock and lookup the offset and cache_ref in the page_cache_table, then unlock.
+
+void vm_cache_insert_page(vm_cache_ref *cache_ref, vm_page *page, off_t offset)
+ Add this page to the page_cache_table.
+
+void vm_cache_remove_page(vm_cache_ref *cache_ref, vm_page *page)
+ Find this page and remove it from the hash list. Clean up the linked lists.
+
+int vm_cache_insert_region(vm_cache_ref *cache_ref, vm_region *region)
+ Add this region to the cache_ref's region list.
+
+int vm_cache_remove_region(vm_cache_ref *cache_ref, vm_region *region)
+ Remove this region from the cache_ref's region list.
\ No newline at end of file
diff --git a/docs/develop/kernel/vm_daemon b/docs/develop/kernel/vm_daemon
new file mode 100644
index 0000000000..b913e30e0c
--- /dev/null
+++ b/docs/develop/kernel/vm_daemon
@@ -0,0 +1,33 @@
+Variables
+
+bool trimming_cycle;
+Do we need free space?
+
+static addr free_memory_low_water;
+
+static addr free_memory_high_water;
+
+static void scan_pages(vm_address_space *aspace, addr free_target)
+ Finds a region in this address space to scan.
+ Locks the region's cache_ref.
+ For each page,
+ if the page is present, do nothing with this page
+ Lookup the page structure. If this page doesn't exist, do nothing with this page.
+ If the page is written to or is hard wired (unswapable), do nothing with it.
+ If the page is not accessed and is active and we need space (free_target), unmap it. If this is the last reference to that mapped page, put it on the inactive list.
+ If the page has been modified, but wasn't on the active list, put it there.
+ Move to the next region in this address space, wrap around until we hit the first one.
+
+static int page_daemon()
+ Walk through every address space:
+ Adjust the size of the processes' working set (i.e. memory allocation) to be larger or smaller, to tailor to faults.
+ Set trimming cycle if free pages is below the high water mark.
+ Clear trimming cycle if free pages is above high water mark.
+ Set free memory target to be the processes' mapped size minus the working set
+ Call scan_pages
+
+
+int vm_daemon_init()
+ Sets high water to pages/4 and low water to pages/8.
+ Creates the page daemon as a kernel thread.
+
\ No newline at end of file
diff --git a/docs/develop/kernel/vm_page b/docs/develop/kernel/vm_page
new file mode 100644
index 0000000000..002564433c
--- /dev/null
+++ b/docs/develop/kernel/vm_page
@@ -0,0 +1,112 @@
+Variables
+extern bool trimming_cycle;
+ Determines if we are trimming - if we are nearly out of space
+
+static page_queue page_free_queue;
+ The queue that holds unused (but not cleared) pages
+
+static page_queue page_clear_queue;
+ The queue that holds cleared (0'ed) pages
+
+static page_queue page_modified_queue;
+ The queue that holds altered pages
+
+static page_queue page_active_queue;
+ The queue that holds in use pages that are not altered
+
+static vm_page *all_pages;
+ Every page in the system
+
+static addr physical_page_offset;
+ The first address of real ram
+
+static unsigned int num_pages;
+ Total number of pages in the system
+
+static spinlock_t page_lock;
+ A lock to protect the queues.
+
+static sem_id modified_pages_available;
+ A semaphore to indicate if there are pages that need to be written to disk
+
+static void clear_page(addr pa);
+ Sets all values in this page to 0.
+
+static vm_page * dequeue_page(page_queue *q)
+ Standard queue remove first page; has count; no locking
+
+void dump_page_stats(int argc, char **argv);
+ Dumps counts of each state (active, inactive, busy, not used, modified, free, cleared, wired)
+
+void dump_free_page_table(int argc, char **argv)
+ Not done.
+
+static void enqueue_page(page_queue *q, vm_page *page)
+ Standard queue add a page; has count; no locking; SPECIAL - for page_modified_queue, if there is only one page modified (new one), release semaphore
+
+static bool is_page_in_phys_range(kernel_args *ka, addr paddr)
+ Determines if a physical address is in the physical memory that exists.
+
+static void move_page_to_queue(page_queue *from_q, page_queue *to_q, vm_page *page)
+ Removes the page from the from_q and adds it to the to_q.
+
+static int pageout_daemon()
+ aquires the "modified pages available" semaphore. Gets first page from modified list. Sets it to busy, updates all processes mapping this page that it is no longer a modified page, writes it out to disk, then puts it on the active list (i.e. not modified). Doesn't write out "anonymous" blocks unless we are trimming.
+
+static int page_scrubber(void *);
+ Every 1/10 second, takes a page from the free queue, memsets it to 0's, then puts it on the clear queue.
+
+static void remove_page_from_queue(page_queue *q, vm_page *page)
+ Removes a given page from the given page queue. No locking.
+
+addr vm_alloc_from_ka_struct(kernel_args *ka, unsigned int size, int lock)
+ Gets virtual space in the ka using vm_alloc_vspace_from_ka_struct, then uses vm_alloc_ppage_from_kernel_struct to find a physical page to map it to.
+
+static addr vm_alloc_ppage_from_kernel_struct(kernel_args *ka)
+ Attempts to extend, by one page, one of the phys_alloc_range blocks in the kernel args.
+
+static addr vm_alloc_vspace_from_ka_struct(kernel_args *ka, unsigned int size)
+ Attempts to find an address range that can be extended to hold size bytes.
+
+vm_page * vm_lookup_page(addr page_num)
+ Does the math to get vm_page pointer from a page number.
+
+int vm_mark_page_inuse(addr page)
+ Calls vm_mark_page_range_inuse with len of 1.
+
+int vm_mark_page_range_inuse(addr start_page, addr len)
+ Sets state to PAGE_STATE_UNUSED for all pages in this range.
+
+vm_page * vm_page_allocate_page(int page_state)
+ Gets a single page from the clear or free queue (from page_state), fall back to the other.
+
+vm_page * vm_page_allocate_page_run(int page_state, addr len)
+ Attempts to find a run of pages "len" long that are either free or clear. If found, pulls them from their queues and calls vm_page_set_state_nolock on them
+
+vm_page * vm_page_allocate_specific_page(addr page_num, int page_state)
+ Finds this page, removes it from the clear or free queue, clears it if necessary and returns. Returns NULL for not found or page in use.
+
+int vm_page_init(kernel_args *ka)
+ Initializes the free, clear, modified and active queues. Sets up the vm structures.
+
+int vm_page_init2(kernel_args *ka)
+ Properly maps the vm structures allocated in vm_page_init.
+
+int vm_page_init_postthread(kernel_args *ka)
+ Creates the page scrubber and the pageout daemon.
+
+addr vm_page_num_pages()
+ Returns the total number of pages.
+
+addr vm_page_num_free_pages()
+ Returns count of pages in free and clear queues.
+
+int vm_page_set_state(vm_page *page, int page_state)
+ Locks, then calls vm_page_set_state_nolock, then unlocks.
+
+static int vm_page_set_state_nolock(vm_page *page, int page_state);
+ Moves a page from the state that it is in to the state specified, and moves it from the old queue to the new one.
+
+
+
+
diff --git a/docs/develop/kernel/vm_store_anonumous_noswap b/docs/develop/kernel/vm_store_anonumous_noswap
new file mode 100644
index 0000000000..7312c3c3df
--- /dev/null
+++ b/docs/develop/kernel/vm_store_anonumous_noswap
@@ -0,0 +1,21 @@
+static void anonymous_destroy(struct vm_store *store)
+ Free's the memory associated with store
+
+static off_t anonymous_commit(struct vm_store *store, off_t size)
+ Returns 0
+
+static int anonymous_has_page(struct vm_store *store, off_t offset)
+ Returns 0
+
+static ssize_t anonymous_read(struct vm_store *store, off_t offset, iovecs *vecs)
+ Returns unimplemented
+
+static ssize_t anonymous_write(struct vm_store *store, off_t offset, iovecs *vecs)
+ Returns 0
+/*
+static int anonymous_fault(struct vm_store *backing_store, struct vm_address_space *aspace, off_t offset)
+*/
+
+
+vm_store *vm_store_create_anonymous_noswap()
+ Allocates space for a vm_store. Populates its ops with the above, sets its cache and data to none.
\ No newline at end of file
diff --git a/docs/develop/kernel/vm_store_device b/docs/develop/kernel/vm_store_device
new file mode 100644
index 0000000000..b9aeb38c78
--- /dev/null
+++ b/docs/develop/kernel/vm_store_device
@@ -0,0 +1,20 @@
+static void device_destroy(struct vm_store *store)
+ Frees the space associated with this store
+
+static off_t device_commit(struct vm_store *store, off_t size)
+ Sets this store's commited size to size.
+
+static int device_has_page(struct vm_store *store, off_t offset)
+ Returns 0
+
+static ssize_t device_read(struct vm_store *store, off_t offset, iovecs *vecs)
+ Returns unimplemented.
+
+static ssize_t device_write(struct vm_store *store, off_t offset, iovecs *vecs)
+ Returns 0
+
+static int device_fault(struct vm_store *store, struct vm_address_space *aspace, off_t offset)
+ Should be called when a page is not mapped in. Locks the translation map, Finds the region in the cache that contains this page and maps it in. Unlocks the cache.
+
+vm_store *vm_store_create_device(addr base_addr)
+ Allocates memory for the vm_store structure, plus the data_store_device structure. Sets cache to null, and data to the device_store_data. Sets the device_store_data's base address to the base address passed in.
\ No newline at end of file
diff --git a/docs/develop/kernel/vm_store_null b/docs/develop/kernel/vm_store_null
new file mode 100644
index 0000000000..88098fae21
--- /dev/null
+++ b/docs/develop/kernel/vm_store_null
@@ -0,0 +1,20 @@
+static void null_destroy(struct vm_store *store)
+ Frees this stores space.
+
+static off_t null_commit(struct vm_store *store, off_t size)
+ Sets committed size to size and returns it.
+
+static int null_has_page(struct vm_store *store, off_t offset)
+ returns 1.
+
+static ssize_t null_read(struct vm_store *store, off_t offset, iovecs *vecs)
+ Returns -1.
+
+static ssize_t null_write(struct vm_store *store, off_t offset, iovecs *vecs)
+ Returns -1.
+
+static int null_fault(struct vm_store *store, struct vm_address_space *aspace, off_t offset)
+ Returns a Fatal page fault error.
+
+vm_store *vm_store_create_null(void)
+ Creates an empty vm_store struct.
\ No newline at end of file
diff --git a/docs/develop/kernel/vm_store_vnode b/docs/develop/kernel/vm_store_vnode
new file mode 100644
index 0000000000..1adb0fddbb
--- /dev/null
+++ b/docs/develop/kernel/vm_store_vnode
@@ -0,0 +1,23 @@
+static void vnode_destroy(struct vm_store *store)
+ Frees memory associated with this store.
+
+static off_t vnode_commit(struct vm_store *store, off_t size)
+ Sets committed size to size and returns it.
+
+static int vnode_has_page(struct vm_store *store, off_t offset)
+ Returns 1.
+
+static ssize_t vnode_read(struct vm_store *store, off_t offset, iovecs *vecs)
+ Calls vfs_readpage.
+
+static ssize_t vnode_write(struct vm_store *store, off_t offset, iovecs *vecs)
+ calls vfs_writepage
+
+static void vnode_acquire_ref(struct vm_store *store)
+ Calls vfs_vnode_aquire_ref
+
+static void vnode_release_ref(struct vm_store *store)
+ Calls vfs_vnode_release_ref
+
+vm_store *vm_store_create_vnode(void *vnode)
+ Creates space for a vm_store and a vnode_store_data. Sets data = vnode_store_data. Sets the vnode_store_data's vnode to vnode.
diff --git a/docs/develop/keymap/About.txt b/docs/develop/keymap/About.txt
new file mode 100644
index 0000000000..17cd661e75
--- /dev/null
+++ b/docs/develop/keymap/About.txt
@@ -0,0 +1,38 @@
+OpenBeOS Keymap preferences
+
+2002-05-16 - The input_server is restarted when a keymap is 'use'd. Hooray!
+
+2002-05-11 - Ok, I have found the 'move keys around with the right mouse button' feature. Now I see the Revert button make sense. Sorry I doubted you JLG :)
+
+2002-05-08 - Fixed switching from user- to system maps and vice versa and added revert button. Just like the original, it does abolutely nothing. Makes one wonder why it is there in the first place.
+
+2002-02-16 - Moved message definitions to messages.h, chopped KeymapApplication::UseKeymap into smaller pieces, created member variable fApplication in KeymapWindow, applied OpenTracker guidelines
+
+2002-02-15 - Added resource file and 'Use' button, made 'System' and 'User' lists mutually exclusive and implemented keymap file copying
+
+2002-02-09 - Added resource file and 'Use' button and made 'System' and 'User' lists mutually exclusive - sort of
+
+2002-02-08 - Initial checkin
+
+
+This version:
+Copies keymap files but doesn't do much else - you even have to restart the Input Server (try BeReset for that) for the new keymap to work. It seems bugfree at doing what it does though :)
+
+
+To do (likely in this order):
+- somehow inform Input Server to use the newly chosen keymap, or else restart the Input Server
+- preselect 'Current'
+- make the 'System' and 'User' labels show up (or: why are they invisible in the current version?)
+- layout the sources to conform to OBOS standards
+- find Be-defined constants for paths and/or files
+- check validity of keymap file before copying
+- add all the fancy stuff that's in the original Keymap application
+- switch to Jam
+- get rid of all excess symbols (or: what linker switch makes the linker remove all external symbols?)
+- hunt leaks and fix'em
+
+
+If anyone looks at my code and sees any major problems, please email me to tell me, I want to work hard on this app to make sure it's as stable and complete as it can get for the OpenBeOS project.
+
+Sandor Vroemisse
+svroemisse@users.sf.net
\ No newline at end of file
diff --git a/docs/develop/midi/Milestones b/docs/develop/midi/Milestones
new file mode 100644
index 0000000000..8ac26ea36b
--- /dev/null
+++ b/docs/develop/midi/Milestones
@@ -0,0 +1,5 @@
+Milestones
+
+1) Implement all MIDI1 classes.
+
+2) Implement all MIDI2 classes.
diff --git a/docs/develop/midi/ToDo b/docs/develop/midi/ToDo
new file mode 100644
index 0000000000..87d8e440fe
--- /dev/null
+++ b/docs/develop/midi/ToDo
@@ -0,0 +1,19 @@
+
+General:
+ - Fill out headers.
+ - Add copyright information to files.
+
+BMidi:
+ - Put semaphores in the right places if necessary.
+
+BMidiStore:
+ - Implement formats 1 and 2
+ - Implement frame based timing
+ - Implement export functionality.
+ - Cleanup
+
+BMidiText:
+ - Nothing?
+
+midi_server:
+ - Get started.
\ No newline at end of file
diff --git a/docs/develop/net/00-Design_general b/docs/develop/net/00-Design_general
new file mode 100644
index 0000000000..87719510eb
--- /dev/null
+++ b/docs/develop/net/00-Design_general
@@ -0,0 +1,97 @@
+Just some general thoughts that have occurred to me as I've started
+looking at stuff related to designing a network stack...
+
+These are in no particular order.
+
+General Jottings
+----------------
+
+- zero-copy is a laudible aim, but in reality single copy is probably
+ as good as we're going to get to. Basically this means that we copy data
+ into the stack at some point.
+- we should use a version of the mbuff's that the BSD stack uses with changes
+ so we use them more efficiently for our stack.
+- probably need an rx and tx queue for frames.
+- we should reallt be dealing with frames as soon as we can in the stack,
+ though we don't want to fragment earlier than we need to - what a quandry!
+- it should be possible to stack/reorder modules as needed. This would be cool
+ if we could deal with input from other sources, e.g. data from a USB port
+ to be fed into a ppp stack, onto an atm/ethernet frame module and upwards.
+
+
+Userland vs Kernel Land
+-----------------------
+
+This has been decided as follows...
+- initial stack will be userland
+- stack should be modular enough that it could be moved into kernel with
+ little or no real work.
+
+
+Initial Protocols
+-----------------
+
+- ethernet/802.x encapsulation (rx only for 802.x)
+- slip (?)
+- ppp (?)
+- arp
+- ipv4
+- icmp (v4)
+- udp
+- tcp
+
+Extra's
+-------
+
+- appletalk ?
+- ipv6
+- icmpv6
+- ipv6 discovery (arp for v6)
+- atm encapsulation module?
+- usb interface (net stack to usb??)
+
+Stack Map
+=========
+
+So, how does this all fit together???
+
+[david: My ascii art is terrible, so hope this works out :)]
+
+ =================
+ = User apps = USERLAND
+ =================
+ | | |
+ | | |
+ ========= ========= =========
+ = UDP = = ICMP* = = TCP =
+ ========= ========= =========
+ \ | /
+ \ | /
+ ===============
+ MBUF = IP (v4/v6) =
+ ===============
+ |
+ -----------------------------
+ | |
+ =============== | =======
+ BUFFER = Eth/802.x =----|---= ARP =
+ =============== | =======
+ | |
+ ----------------------------|-----
+ | |
+ =========== |
+ = NIC IF = | KERNEL
+ ===========
+
+* ICMP is used as a placeholder for both ICMPv4 and ICMPv6, which are very
+ different from each other in scope and usage.
+
+Basically every module only needs to be able to call the module that deal with the
+input/output of the protocol it find encapsulated, i.e. if IP finds a TCP packet
+it simply needs to be able to call tcp_input and pass the mbuf along. There is a
+requirement that each call to xxx_input gives the length of the header as they're
+variable in most protocols.
+
+This just starts to scratch the surface, but I hope gives more of an idea
+of what's been bouncing around in my head. :)
+
diff --git a/docs/develop/net/10-NetworkDrivers b/docs/develop/net/10-NetworkDrivers
new file mode 100644
index 0000000000..44061d239b
--- /dev/null
+++ b/docs/develop/net/10-NetworkDrivers
@@ -0,0 +1,13 @@
+Network Drivers - Milestone #1
+
+Having done some work on the Tulip cards, here are some general
+comments.
+
+- we should have both an rx and tx queue and pop/push from the queue
+ in the system rx/tx_thread. this should provide good performance
+- order of calling is
+ : detect
+ : init
+- the driver is normally in 2 pieces, one for the general calls and
+ one for the device specific stuff.
+
diff --git a/docs/develop/net/30-NetCache b/docs/develop/net/30-NetCache
new file mode 100644
index 0000000000..9d3d943380
--- /dev/null
+++ b/docs/develop/net/30-NetCache
@@ -0,0 +1,22 @@
+Net Cache - Milestone #2
+========================
+
+Hmm, a general purpose net cache.
+
+Types of Cache
+==============
+
+What are we likely to need a fast cache for? Look below.
+
+- ipv4 address to ethernet MAC address (ARP)
+- MAC address to IPv4 (RARP)
+- list of IPv6 neighbours/routers/prefix's
+
+There remain problems in that for many of these needs additional
+information is required, this information being specific to the
+use at the time.
+
+However, all these uses require an ability to quickly find information
+given a key that is a number of variable length, hence the conceptual
+idea of using a hash lookup.
+
diff --git a/docs/develop/net/Milestones b/docs/develop/net/Milestones
new file mode 100644
index 0000000000..797311b2f1
--- /dev/null
+++ b/docs/develop/net/Milestones
@@ -0,0 +1,66 @@
+Milestones
+==========
+
+These were agreed 17th january 2002 in an IRC meeting.
+
+IRC log http://www.darkest.org/openbeos/netkit/02.01.17.openbeosnetkit.log
+
+Milestone Description
+
+1 network drivers
+ It was recognised that until the team members had
+ working NIC's there was little point in trying to
+ develop a network stack.
+
+ STATUS: rtl8139 in repository
+ tulip driver written covering Netgear FA310TX
+ Ne2000 driver started
+
+2 Encapsulation
+ Ethernet packets come in 2 basic forms,
+ ethernet encapsulation (rfc 894)
+ IEEE 802.2/3/4/5 (rfc1042)
+ We need to be able to handle both. However, we only
+ MUST be able to send ethernet compatible frames. In pactice
+ we should try to send the frame in the same format that it
+ was received. In fact we may want to store the format used by
+ hosts?
+
+ David says this isn't easy to do with the current newos
+ stack design.
+
+ STATUS: newos has ethernet support, but with the current
+ architecture it's difficult to add fully transparent
+ support for other encapsulations.
+
+3 ARP module
+ Once we can get frames from the network, one of the first
+ things we need to do is start capturing and caching ARP
+ requests.
+ NB david thinks this should be aimed at providing more
+ general purpose caching so it's useful beyond ARP. he
+ suggests we call this a Net Cache module.
+
+ STATUS: newos has an arp module, though cache needs work
+ and is limited to ipv4
+
+4 IPv4 checksums + routing
+ Implement IPv4 checksums and routing
+
+ STATUS: newos has a basic version of thisi
+
+5 IPv4 ICMP
+ Add ICMP support to out IPv4 module
+
+6 IPv4 Fragmentation
+ This will be interesting, adding support for reconstructing
+ and deconstructing packets into suitable frames for transport.
+ NB this needs to be abel to deal with different sizes of
+ frame.
+
+ STATUS:
+
+7 TCP/UDP
+
+ STATUS: newos has rudimentary UDP support
+
diff --git a/docs/develop/net/naming b/docs/develop/net/naming
new file mode 100644
index 0000000000..94af397c2b
--- /dev/null
+++ b/docs/develop/net/naming
@@ -0,0 +1,20 @@
+Document naming.
+
+Well, I've been thinking about this and I've decided that maybe
+this formatting of the numbers we use will work. Maybe it won't,
+but until someone else shouts...
+
+First digit is the milestone referred to, with 0 being for
+general design.
+
+Second digit:
+ - layer involved for general design
+ - incremental for milestones
+ - 0 for general design comments
+
+So, 00 = general design principals
+ 01 = general design for layer 1
+ 10 = general design comments for milestone 1
+ 11 = first document about milestone 1
+
+Does that work for people?
diff --git a/docs/develop/print/AddPrinter Message.txt b/docs/develop/print/AddPrinter Message.txt
new file mode 100644
index 0000000000..ce4ea557d8
--- /dev/null
+++ b/docs/develop/print/AddPrinter Message.txt
@@ -0,0 +1,6 @@
+PrintServerApp::MessageReceived(): BMessage: what = selp (0x73656c70, or 1936026736)
+ entry driver, type='CSTR', c=1, size=17, data[0]: "EPSON C40 Series"
+ entry transport, type='CSTR', c=1, size=12, data[0]: "Serial Port"
+ entry transport path, type='CSTR', c=1, size=8, data[0]: "serial1"
+ entry printer name, type='CSTR', c=1, size=8, data[0]: "my_test"
+ entry connection, type='CSTR', c=1, size=6, data[0]: "Local"
diff --git a/docs/develop/print/Input Driver.txt b/docs/develop/print/Input Driver.txt
new file mode 100644
index 0000000000..7df925772b
--- /dev/null
+++ b/docs/develop/print/Input Driver.txt
@@ -0,0 +1,19 @@
+2x PageSetup
+1x Print
+
+
+config_page((null),0x80013478)
+BMessage: what = pgst (0x70677374, or 1885827956)
+ entry printer, type='LONG', c=1, size= 4, data[0]: 0x80013218 (-2147405288, à§€2')
+
+
+config_page((null),0x80013478)
+BMessage: what = pgst (0x70677374, or 1885827956)
+ entry current_printer, type='CSTR', c=1, size=12, data[0]: "DemoPrinter"
+ entry printer, type='LONG', c=1, size= 4, data[0]: 0x80013218 (-2147405288, à§€2')
+
+
+config_job((null),0x80013478)
+BMessage: what = ppst (0x70707374, or 1886417780)
+ entry current_printer, type='CSTR', c=1, size=12, data[0]: "DemoPrinter"
+ entry printer, type='LONG', c=1, size= 4, data[0]: 0x80013218 (-2147405288, à§€2')
diff --git a/docs/develop/print/MessagesFromPageSetup.txt b/docs/develop/print/MessagesFromPageSetup.txt
new file mode 100644
index 0000000000..491481d0f9
--- /dev/null
+++ b/docs/develop/print/MessagesFromPageSetup.txt
@@ -0,0 +1,72 @@
+BMessage: what = okok (0x6f6b6f6b, or 1869311851)
+ entry printer, type='LONG', c=1, size= 4, data[0]: 0x8003b390 (-2147241072, à³')
+ entry page_format, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
+ entry orientation, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
+ entry scale, type='FLOT', c=1, size= 4, data[0]: 100.0000
+ entry xres, type='LONG', c=1, size= 4, data[0]: 0x12c (300, '')
+ entry yres, type='LONG', c=1, size= 4, data[0]: 0x12c (300, '')
+ entry paper_rect, type='RECT', c=1, size=16, data[0]: BRect(l:0.0, t:0.0, r:612.0, b:792.0)
+ entry printable_rect, type='RECT', c=1, size=16, data[0]: BRect(l:18.0, t:18.0, r:594.0, b:774.0)
+ entry current_printer, type='CSTR', c=1, size=27, data[0]: "HPLaserJetPCL3Driver_BeInc"
+
+BMessage: what = GOOD (0x474f4f44, or 1196379972)
+ entry printer, type='LONG', c=1, size= 4, data[0]: 0x800131a8 (-2147405400, ী౨')
+ entry EPST_copies, type='LONG', c=1, size= 4, data[0]: 0x1 (1, '')
+ entry EPST_dst_idx_page, type='LONG', c=1, size= 4, data[0]: 0x5 (5, '')
+ entry EPST_src_idx_page, type='LONG', c=1, size= 4, data[0]: 0x7 (7, '')
+ entry EPST_orientation, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
+ entry EPST_page_order, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
+ entry EPST_centered, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
+ entry EPST_extended, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
+ entry EPST_rotate180, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
+ entry EPST_page_state, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
+ entry EPST_logic_userdef_width, type='FLOT', c=1, size= 4, data[0]: 0.0000
+ entry EPST_logic_userdef_height, type='FLOT', c=1, size= 4, data[0]: 0.0000
+ entry EPST_page_name, type='CSTR', c=1, size=3, data[0]: "A4"
+ entry EPST_scale, type='FLOT', c=1, size= 4, data[0]: 100.0000
+ entry paper_rect, type='RECT', c=1, size=16, data[0]: BRect(l:0.0, t:0.0, r:595.2, b:841.8)
+ entry printable_rect, type='RECT', c=1, size=16, data[0]: BRect(l:8.4, t:8.4, r:586.8, b:802.2)
+ entry EPST_page_rect, type='RECT', c=1, size=16, data[0]: BRect(l:0.0, t:0.0, r:2976.0, b:4209.0)
+ entry EPST_printer_rect, type='RECT', c=1, size=16, data[0]: BRect(l:42.0, t:42.0, r:2934.0, b:4011.0)
+ entry EPST_page_settings_dpi, type='FLOT', c=1, size= 4, data[0]: 72.0000
+ entry EPST_printer_settings_dpi, type='FLOT', c=1, size= 4, data[0]: 360.0000
+ entry EPST_paper_feed, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
+ entry EPST_quality, type='LONG', c=1, size= 4, data[0]: 0x1 (1, '')
+ entry EPST_resolution, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
+ entry EPST_paper_type, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
+ entry EPST_color, type='LONG', c=1, size= 4, data[0]: 0x6 (6, '')
+ entry EPST_microweave, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
+ entry EPST_unidirectionnal, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
+ entry xres, type='LONG', c=1, size= 4, data[0]: 0x168 (360, '')
+ entry yres, type='LONG', c=1, size= 4, data[0]: 0x168 (360, '')
+ entry EPST_BEATWARE, type='BOOL', c=1, size= 1, data[0]: 0
+ entry first_page, type='LONG', c=1, size= 4, data[0]: 0x1 (1, '')
+ entry last_page, type='LONG', c=1, size= 4, data[0]: 0x7fffffff (2147483647, '')
+ entry EPST_preview, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
+ entry current_printer, type='CSTR', c=1, size=24, data[0]: "EPSONStylusDriver_BeInc"
+
+BMessage: what = okok (0x6f6b6f6b, or 1869311851)
+ entry printer, type='LONG', c=1, size= 4, data[0]: 0x8003b498 (-2147240808, à´˜')
+ entry bitmap, type='BOOL', c=1, size= 1, data[0]: 0
+ entry HighQuality, type='BOOL', c=1, size= 1, data[0]: 0
+ entry in_color, type='BOOL', c=1, size= 1, data[0]: 0
+ entry orientation, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
+ entry page size, type='CSTR', c=1, size=7, data[0]: "Letter"
+ entry ppd_item, type='MSGG', c=1, size= 0,
+ entry xres, type='LLNG', c=1, size= 8, data[0]: 0x12c (300, '')
+ entry yres, type='LLNG', c=1, size= 8, data[0]: 0x12c (300, '')
+ entry paper_rect, type='RECT', c=1, size=16, data[0]: BRect(l:0.0, t:0.0, r:612.0, b:792.0)
+ entry units, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
+ entry printable_rect, type='RECT', c=1, size=16, data[0]: BRect(l:14.4, t:21.6, r:597.6, b:784.8)
+ entry first up, type='BOOL', c=1, size= 1, data[0]: 1
+ entry current_printer, type='CSTR', c=1, size=23, data[0]: "PostScriptDriver_BeInc"
+
+BMessage: what = okok (0x6f6b6f6b, or 1869311851)
+ entry printer, type='LONG', c=1, size= 4, data[0]: 0x80018af0 (-2147382544, 瀊')
+ entry orientation, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
+ entry scale, type='FLOT', c=1, size= 4, data[0]: 100.0000
+ entry xres, type='LONG', c=1, size= 4, data[0]: 0x12c (300, '')
+ entry yres, type='LONG', c=1, size= 4, data[0]: 0x12c (300, '')
+ entry paper_rect, type='RECT', c=1, size=16, data[0]: BRect(l:0.0, t:0.0, r:612.0, b:792.0)
+ entry printable_rect, type='RECT', c=1, size=16, data[0]: BRect(l:0.0, t:0.0, r:612.0, b:792.0)
+ entry current_printer, type='CSTR', c=1, size=20, data[0]: "PreviewDriver_BeInc"
diff --git a/docs/develop/print/PrintSession Messages.txt b/docs/develop/print/PrintSession Messages.txt
new file mode 100644
index 0000000000..222c10a898
--- /dev/null
+++ b/docs/develop/print/PrintSession Messages.txt
@@ -0,0 +1,40 @@
+$ print_server
+
+----------------------------------------------------------------------------------------------------------------------------------------------------
+ PAGE SETUP.........
+----------------------------------------------------------------------------------------------------------------------------------------------------
+
+PrintServerApp::MessageReceived(): BMessage: what = pgst (0x70677374, or 1885827956)
+PrintServerApp::MessageReceived(): BMessage: what = BRAW (0x42524157, or 1112686935)
+ entry active, type='BOOL', c=1, size= 1, data[0]: 1
+PrintServerApp::MessageReceived(): BMessage: what = BRAW (0x42524157, or 1112686935)
+ entry active, type='BOOL', c=1, size= 1, data[0]: 0
+PrintServerApp::MessageReceived(): BMessage: what = pgcp (0x70676370, or 1885823856)
+
+----------------------------------------------------------------------------------------------------------------------------------------------------
+ PRINT.........
+----------------------------------------------------------------------------------------------------------------------------------------------------
+
+PrintServerApp::MessageReceived(): BMessage: what = pgcp (0x70676370, or 1885823856)
+PrintServerApp::MessageReceived(): BMessage: what = ppst (0x70707374, or 1886417780)
+ entry orientation, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
+ entry scale, type='FLOT', c=1, size= 4, data[0]: 100.0000
+ entry xres, type='LONG', c=1, size= 4, data[0]: 0x12c (300, '')
+ entry yres, type='LONG', c=1, size= 4, data[0]: 0x12c (300, '')
+ entry paper_rect, type='RECT', c=1, size=16, data[0]: BRect(l:0.0, t:0.0, r:612.0, b:792.0)
+ entry printable_rect, type='RECT', c=1, size=16, data[0]: BRect(l:0.0, t:0.0, r:612.0, b:792.0)
+ entry current_printer, type='CSTR', c=1, size=20, data[0]: "PreviewDriver_BeInc"
+PrintServerApp::MessageReceived(): BMessage: what = BRAW (0x42524157, or 1112686935)
+ entry active, type='BOOL', c=1, size= 1, data[0]: 1
+PrintServerApp::MessageReceived(): BMessage: what = BRAW (0x42524157, or 1112686935)
+ entry active, type='BOOL', c=1, size= 1, data[0]: 0
+PrintServerApp::MessageReceived(): BMessage: what = pgcp (0x70676370, or 1885823856)
+
+----------------------------------------------------------------------------------------------------------------------------------------------------
+ After spooling:
+----------------------------------------------------------------------------------------------------------------------------------------------------
+
+PrintServerApp::MessageReceived(): BMessage: what = pgcp (0x70676370, or 1885823856)
+PrintServerApp::MessageReceived(): BMessage: what = psns (0x70736e73, or 1886613107)
+ entry JobName, type='CSTR', c=1, size=15, data[0]: "InterestFields"
+ entry Spool File, type='CSTR', c=1, size=79, data[0]: "/boot/home/config/settings/printers/PreviewDriver_BeInc/InterestFields@8257001"
diff --git a/docs/develop/print/Printers Def Window Frame.txt b/docs/develop/print/Printers Def Window Frame.txt
new file mode 100644
index 0000000000..70ce626a9a
--- /dev/null
+++ b/docs/develop/print/Printers Def Window Frame.txt
@@ -0,0 +1 @@
+BRect(78.0, 71.0, 561.0, 409.0)
\ No newline at end of file
diff --git a/docs/develop/print/Printing Architecture.txt b/docs/develop/print/Printing Architecture.txt
new file mode 100644
index 0000000000..ddc80fbab4
--- /dev/null
+++ b/docs/develop/print/Printing Architecture.txt
@@ -0,0 +1,5 @@
+Information from BeOS R5 implementation:
+
+BPrintJob::ConfigPage()
+BPrintJob::ConfigJob()
+BPrintJob::TakeJob()
diff --git a/docs/develop/print/StyleEdit_PageSetup_JobSetup.txt b/docs/develop/print/StyleEdit_PageSetup_JobSetup.txt
new file mode 100644
index 0000000000..b3e7e41dfe
--- /dev/null
+++ b/docs/develop/print/StyleEdit_PageSetup_JobSetup.txt
@@ -0,0 +1,18 @@
+$ print_server
+Loaded addon /boot/home/config/add-ons/Print/DemoDriver
+Loaded addon /boot/beos/system/add-ons/Print/transport/Serial Port
+Loaded addon /boot/beos/system/add-ons/Print/EPSON Stylus Driver
+Loaded addon /boot/beos/system/add-ons/Print/transport/Parallel Port
+Loaded addon /boot/beos/system/add-ons/Print/HP PCL3 LaserJet Compatible
+Loaded addon /boot/beos/system/add-ons/Print/transport/USB Port
+Loaded addon /boot/beos/system/add-ons/Print/PostScript
+Loaded addon /boot/beos/system/add-ons/Print/transport/Print To File
+Loaded addon /boot/beos/system/add-ons/Print/Preview
+BMessage: what = pgst (0x70677374, or 1885827956)
+BMessage: what = pgcp (0x70676370, or 1885823856)
+-------------------------------------------------
+BMessage: what = pgcp (0x70676370, or 1885823856)
+BMessage: what = ppst (0x70707374, or 1886417780)
+ entry current_printer, type='CSTR', c=1, size=24, data[0]: "EPSONStylusDriver_BeInc"
+BMessage: what = pdef (0x70646566, or 1885627750)
+BMessage: what = pgcp (0x70676370, or 1885823856)
diff --git a/docs/develop/print/libbe.so.printing.txt b/docs/develop/print/libbe.so.printing.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2e8e5f96e21e0d0721efe616225626c24b1d0dec
GIT binary patch
literal 333
zcmYjM%TB~F4CL&uFegr1{sB%a4qH*gwQ}2`i8kv*PFm5wC*2~!$@9|KZp~}q4z|J`
zNKy)Zl;Wd4f1g&Jnirhf?){T4Z`A&avd^rsupy_Ylh?U9{E8T6(P&%7E4_+76&?^g
zR&a4r_{>gr9C?aW@%fR4I4_wbZ#woV^%=K=q~z$sfhT;)5(?)n7u-1Qhrnu2=Fy4H
zm>T9bKr)zYQEp{Mhq5FVosK-qEM6PBTxFxPt`dB8YL0Dh_$$D@Tk3ZX*3h_^RjL17
SO7|&4KyMh!L1Deh4fF%29Cq9Q
literal 0
HcmV?d00001
diff --git a/docs/develop/storage/Annotations b/docs/develop/storage/Annotations
new file mode 100644
index 0000000000..888424ebe4
--- /dev/null
+++ b/docs/develop/storage/Annotations
@@ -0,0 +1,444 @@
+# Annotations
+# ===========
+#
+# This file contains a list of miscellaneous annotations.
+# An entry has the following tags:
+# * OS: the concerned "operating system" (BeOS R5, OBOS POSIX)
+# * Module: the concerned class or file
+# * Location: a more precise location, e.g. a function
+# * Description: a description of the item
+
+OS: BeOS R5
+Module: BEntry
+Location: BEntry(const BDirectory*, const char*),
+ SetTo(const BDirectory*, const char*)
+Description: Crash when passing a NULL BDirectory.
+
+
+OS: BeOS R5
+Module: BEntry
+Location: MoveTo()
+Description: Crashs when passing a NULL BDirectory.
+
+
+OS: BeOS R5
+Module: BPath
+Location: BPath(const BDirectory*, const char*, bool),
+ SetTo(const BDirectory*, const char*, bool)
+Description: Crash when passing a NULL BDirectory.
+
+
+OS: BeOS R5
+Module: BPath
+Location: GetParent()
+Description: Crashs when called on an uninitialized object or when passing
+ a NULL BPath.
+
+
+OS: BeOS R5
+Module: BPath
+Location: operator==(), operator!=()
+Description: Uninitialized paths are not equal. An initialized path equals
+ a (const char*)NULL, an uninitialized path does not.
+
+
+OS: BeOS R5
+Module: BPath
+Location: Flatten()
+Description: Crashs when passing a NULL buffer and doesn't check the buffer
+ size.
+
+
+OS: BeOS R5
+Module: BStatable
+Location: destructor
+Description: Is not virtual.
+
+
+OS: BeOS R5
+Module: BStatable
+Location: GetAccessTime(), SetAccessTime()
+Description: Access time unused.
+
+
+OS: BeOS R5
+Module: BStatable
+Location: GetPermissions()
+Description: Doesn't filter the mode flags, thus not only the permissions are
+ returned.
+
+
+OS: BeOS R5
+Module: BStatable
+Location: Get*()
+Description: Crash when passing a NULL pointer.
+
+
+OS: OBOS POSIX
+Module: BStatable
+Location: SetPermissions/ModificationTime/CreationTime()
+Description: Don't work due to set_stat(FileDescriptor, StatMember)
+ limitations.
+
+
+OS: OBOS POSIX
+Module: kernel_interface
+Location: set_stat(FileDescriptor, StatMember)
+Description: WSTAT_MODE, WSTAT_*TIME can't be implemented due to missing
+ fchmod()/FD time setters.
+
+
+OS: BeOS R5
+Module: libroot
+Location: fchown()
+Description: fchown(file, 0xFFFFFFFF, gid) sets the UID to 0xFFFFFFFF, which
+ is a bug.
+
+
+OS: BeOS R5
+Module: libroot
+Location: readdir(), fs_read_attr_dir()
+Description: The d_reclen field of a dirent structure does not contain the
+ length of the whole structure (unlike stated in
+ BeBook::BEntryList), but only the length of the d_name field.
+ If the terminating '\0' is counted or not seems to depend on the
+ file system.
+
+
+OS: OBOS POSIX
+Module: kernel_interface
+Location: read_link(FileDescriptor, char*, size_t)
+Description: Can't be implemented due to the lack of an FD readlink() version.
+
+
+OS: BeOS R5
+Module: BSymLink
+Location: MakeLinkedPath(const char*, BPath*)
+Description: The dirPath seems to be converted into a BDirectory, which
+ causes links to be resolved, i.e. a "/tmp" dirPath expands to
+ "/boot/var/tmp". That does also mean, that the dirPath must
+ exists!
+
+
+OS: BeOS R5
+Module: BSymLink
+Location: MakeLinkedPath()
+Description: Crashs when passing a NULL const char* or BDirectory.
+
+
+OS: BeOS R5
+Module: BNode
+Location: GetNextAttrName()
+Description: Crashs when passing a NULL buffer.
+
+
+OS: BeOS R5
+Module: BNode
+Location: Read/WriteAttrString()
+Description: Crash when passing a NULL BString.
+
+
+OS: BeOS R5
+Module: BNode
+Location: Lock()
+Description: Given two BNode objects initialized to the same node, it is
+ possible to Lock() one of them, although the BeBook says it isn't.
+
+
+OS: BeOS R5
+Module: BDirectory
+Location: BDirectory(const node_ref*), SetTo(const node_ref*)
+Description: Crash when passing a NULL node_ref.
+
+
+OS: BeOS R5
+Module: BDirectory
+Location: GetEntry()
+Description: Crashs when passing a NULL BEntry.
+
+
+OS: BeOS R5
+Module: BDirectory
+Location: FindEntry()
+Description: Crashs when passing a NULL BEntry.
+
+
+OS: BeOS R5
+Module: BDirectory
+Location: Contains()
+Description: If the BDirectory is uninitialized, the const char* version
+ returns true for existing entries, whereas the const BEntry*
+ version returns false.
+
+
+OS: BeOS R5
+Module: BDirectory
+Location: Contains(const BEntry*, bool)
+Description: Crashs when passing a NULL BEntry.
+
+
+OS: BeOS R5
+Module: BDirectory
+Location: Contains(const BEntry*, bool)
+Description: Bug: Tests with a directory, contained file/dir/symlink and
+ the respective node kind (B_FILE_NODE/B_DIRECTORY_NODE/
+ B_SYMLINK_NODE) result false.
+
+
+OS: BeOS R5
+Module: BDirectory
+Location: GetNextDirents()
+Description: Crashs when passing a NULL buffer.
+
+
+OS: OBOS
+Module: BQuery
+Location: Push*()
+Description: Return status_t instead of void. Fail, if Fetch() has already
+ been called.
+
+
+OS: BeOS R5
+Module: BQuery
+Location: PushOp()
+Description: Crashs when pushing B_CONTAINS/B_BEGINS/ENDS_WITH on an empty
+ stack.
+
+
+OS: BeOS R5
+Module: BQuery
+Location: PushUInt64()
+Description: Doesn't work. Predicates constructed using it are invalid.
+
+
+OS: BeOS R5
+Module: BQuery
+Location: Get/SetPredicate()
+Description: Crash when passing a NULL BString/char*.
+
+
+OS: BeOS R5
+Module: BQuery
+Location: SetVolume()
+Description: Crashs when passing a NULL BVolume.
+
+
+OS: BeOS R5
+Module: BQuery
+Location: GetNextEntry/Ref()
+Description: Crash when passing a NULL BEntry/entry_ref.
+
+
+OS: BeOS R5
+Module: BMimeType
+Location: {Get,Set}LongDescription()
+Description: Crashes when passed a NULL description
+
+
+OS: BeOS R5
+Module: BMimeType
+Location: GetLongDescription()
+Description: The contents of the description string are modified even if
+ the function fails.
+
+
+OS: BeOS R5
+Module: BMimeType
+Location: SetShortDescription()
+Description: When passed a NULL description, doesn't crash, but does
+ appear to make the result of following calls to SetShortDescription
+ unreliable (sometimes they work, sometimes they don't).
+
+
+OS: BeOS R5
+Module: BMimeType
+Location:
+Description: The maximal MIME string length, BMimeType accepts is
+ B_MIME_TYPE_LENGTH *not* including terminating null. Note, that
+ app_info reserves only B_MIME_TYPE_LENGTH chars for the
+ signature field.
+
+
+OS: BeOS R5
+Module: BMimeType
+Location: SetAppHint()
+Description: The entry_ref passed to SetAppHint() must be valid but is not
+ required to refer to a file that actually exists; furthermore,
+ if it does exist, the MIME type of the file is not required to
+ match the BMimeType object's type.
+
+
+OS: BeOS R5
+Module: BMimeType
+Location: SetIcon()
+Description: The BBitmap passed to BMimeType::SetIcon() must be in the B_CMAP8
+ color space, or the application will crash. We should remember
+ to be smarter about this.
+
+
+OS: BeOS R5
+Module: BMimeType
+Location: GetIcon()
+Description: The BBitmap passed to BMimeType::GetIcon() must be in the B_CMAP8
+ color space. If not, the call returns B_OK but doesn't actually
+ modify the bitmap. We should remember to be smarter about this.
+
+
+OS: BeOS R5
+Module: BMimeType
+Location: IsValid(const char*), GetSupertype(), Contains()
+Description: Crash when passing NULL.
+
+
+OS: BeOS R5
+Module: BMimeType
+Location: {Get,Set}IconForType(char*, BBitmap*, icon_size)
+Description: Passing NULL as the first parameter is the same as calling
+ {Get,Set}Icon() with the second two parameters (i.e. {gets,sets}
+ the icon for the type itself).
+
+
+OS: BeOS R5
+Module: BMimeType
+Location: SetFileExtensions()
+Description: Passing a NULL message does not clear the File Extensions field
+ for the MIME type as indicated by the Be Book; instead, it crashes
+ the application :-)
+
+
+OS: BeOS R5
+Module: BMimeType
+Location: GetFileExtensions()
+Description: A B_STRING_TYPE field of name "type" is *added* to the result
+ containing the MIME type of the BMimeType object. Since the
+ BMessage passed to SetFileExtensions() appears to be simply
+ flattened into the appropriate attribute, the "type" field is
+ appended to any such "type" fields that may already exist in
+ the original BMessage.
+
+
+OS: BeOS R5
+Module: BMimeType
+Location: Install()
+Description: From the Be Book: "Currently, Install() may return a random value
+ if the object is already installed."
+
+
+OS: BeOS R5
+Module: BMimeType
+Location:
+Description: MIME Type strings are converted to lowercase before being used
+ as filenames in the MIME database.
+
+
+OS: BeOS R5
+Module: BMimeType
+Location: Start/StopWatching()
+Description: An invalid messenger (BMessenger::Invalid()) is fine as parameter.
+
+
+OS: BeOS R5
+Module: Mime.h/cpp
+Location: get_device_icon()
+Description: KDL when passing a NULL buffer!
+
+
+OS: BeOS R5
+Module: BMimeType
+Location: CheckSnifferRule()
+Description: Crashes when passing a NULL rule.
+
+
+OS: BeOS R5
+Module: BMimeType
+Location: GetSnifferRule()
+Description: Crashes when passing a NULL BString.
+
+
+OS: BeOS R5
+Module: BMimeType
+Location: Check/Get/SetSnifferRule()
+Description: The sniffer rules description in the BeBook deviates considerably
+ from the actual implementation:
+ - + masks
+ - + top level ORs: (patterns...) | (patterns...) | ...
+ - - range overriding: [range1] ([range2]pattern)
+ - either no or complete ranges: (pattern1 | pattern2)
+ or ([range1]pattern1 | [range2]pattern2), but not
+ ([range1]pattern1 | pattern2)
+ - CheckSnifferRule() doesn't check some of the values, e.g.
+ ranges (negative values, or begin > end) or 0 <= priority <= 1.
+
+
+OS: BeOS R5
+Module: BMimeType
+Location: GuessMimeType(const entry_ref *, BMimeType *)
+Description: When passing an uninitialized entry_ref, B_OK and
+ "application/octet-stream" are returned.
+
+
+OS: BeOS R5
+Module: BMimeType
+Location: SetAttrInfo
+Description: Crashes when passed a NULL BMessage.
+
+
+OS: BeOS R5
+Module: BMimeType
+Location: GetInstalledTypes(BMessage*)
+Description: The set of types returned by this function is determined as follows:
+ + All *entries* (files, dirs, or symlinks) in the root MIME database
+ directory treated as MIME types, except those that begin with an
+ underscore; only dirs are treated as supertypes (unless the dir's
+ META:TYPE attribute is different than its filename, in which case
+ it's not treated as a supertype).
+ + For each supertype, all *entries* (files, dirs, or symlinks) in the
+ corresponding supertype subdirectory are treated as a MIME type, except
+ those that begin with an underscore.
+ + The MIME type for supertypes is taken from the name of the supertype
+ subdirectory.
+ + The MIME type for non-supertypes is take from the entry's META:TYPE
+ attribute. If the entry has no META:TYPE attribute, the MIME type is
+ derived by concatentating the name of the supertype directory to the
+ name of the entry, separated by a "/" character. Either way, the MIME
+ string returned is not checked to be valid.
+
+
+OS: BeOS R5
+Module: BMimeType
+Location: GetInstalledTypes(char *super, BMessage*)
+Description: The set of types returned by this function is determined as follows:
+ + All *entries* (files, dirs, or symlinks) in the MIME database directory
+ corresponding to the "super" argument are treated as subtypes, *except*
+ those whose filenames begin with an underscore. It does not matter if
+ the supertype directory has a META:TYPE attribute or not.
+ + The MIME type is taken from the entry's META:TYPE attribute. If the entry
+ has no such attribute, the MIME type is derived by concatentating the name
+ of the supertype directory (the directory's META:TYPE attribute is ignored
+ if present) to the name of the entry, separated by a "/" character. Either
+ way, the MIME string returned is not checked to be valid.
+
+
+OS: BeOS R5
+Module: BMimeType
+Location: GetInstalledSupertypes(BMessage*)
+Description: The set of types returned by this function is determined as follows:
+ + All directories in the root MIME database directory are treated as
+ supertypes (even directories beginning with an underscore).
+ + The MIME type is derived from the directory name, which is not
+ checked to be a valid MIME string.
+
+
+OS: BeOS R5
+Module: BMimeType
+Location: GetWildcardApps()
+Description: This code:
+ BMessage msg;
+ status_t error = BMimeType::GetWildcardApps(&msg);
+ is the same as:
+ BMessage msg;
+ BMimeType mime("application/octet-stream");
+ status_t error = mime.InitCheck();
+ if (!error)
+ error = mime.GetSupportingApps(&msg);
+
diff --git a/docs/develop/storage/Completed b/docs/develop/storage/Completed
new file mode 100644
index 0000000000..be116ce2b6
--- /dev/null
+++ b/docs/develop/storage/Completed
@@ -0,0 +1,5 @@
+# Completed
+# =========
+#
+# This file contains completed ToDo items.
+
diff --git a/docs/develop/storage/RegistrarNotes.html b/docs/develop/storage/RegistrarNotes.html
new file mode 100644
index 0000000000..94d59997e6
--- /dev/null
+++ b/docs/develop/storage/RegistrarNotes.html
@@ -0,0 +1,102 @@
+
+
+ Registrar Notes
+
+
+
+
+
+
+Registrar Tasks:
+
+ - MIME Database chores (note that BMimeType appears to read from the database directly for
Get*() calls.)
+
+ - Writes to the database --
SetLongDescription(), SetPreferredApp(), create_app_meta_mime(), etc
+ - Monitoring of the database --
{Start,Stop}Watching()
+ - Sniffer duties -- Sniffer code plus
{Get,Set,Check}SnifferRule()
+
+
+
+ - Timing chores
+
+ - BMessageRunner functionality
+
+ - System Shutdown chores
+
+ - Shutdown cycle
+
- System shutdown window
+
+ - Roster chores
+
+ - Recent documents, folders, and apps
+
- Info about running applications
+
- etc...
+
+
+
+
+
+Registrar Internals:
+
+
+The registrar is a non-standard BApplication. It has a shadow app in the app_server
+like a normal BApplication, but one of its ports is slightly different:
+
+
+ - Standard ports -- snd, rcv, AppLooperPort
+
- Registrar ports -- snd, rcv, _roster_port_
+
+
+Since BLooper::port_id is private to BLooper (to whom BApplication
+is a friend), and since you can't rename a port after it's been created,
+it's likely that the only way to rename the AppLooperPort and have the registrar
+still be a BApplication is to have BApplication check if it's the
+registrar when it's created, and use _roster_port_ as the name for what would
+otherwise be its AppLooperPort.
+
+
+The rationale behind having a port with a specific name is that the registrar
+implements the roster functionality. Thus one can't address it using the app signature
+constructor of BMessenger, but rather must send the message directly to
+a named port (for example, upon creation, a BApplication object must find and contact
+the registrar to notify it of another running application; if the registrar
+cannot be found, the application putzes out).
+
+
+
+
+The Registrar has three threads:
+
+ - _roster_thread_
+
- timer_thread
+
- main_mime
+
+
+
+
+BMimeType Notes:
+
+ - The
Get*() methods directly access the MIME database.
+ - The
Set*() methods send a message to another entity which does the job.
+ The function that does the sending is called _send_to_roster_(), so I
+ suppose the roster is the one. Since the registrar has a thread named
+ _roster_thread_, I assume the roster lives in the registrar.
+ -
Start/StopWatching() call BRoster::_Start/_StopWatching().
+ - Adding/removing a MIME type file in
~/config/settings/beos_mime/*/ does
+ not trigger a notification message. So obviously no node monitoring is
+ done and changes to the database are supposed to be done using the API.
+
+
+
+Links:
+
+
+
\ No newline at end of file
diff --git a/docs/develop/storage/ToDo b/docs/develop/storage/ToDo
new file mode 100644
index 0000000000..49f7f5a293
--- /dev/null
+++ b/docs/develop/storage/ToDo
@@ -0,0 +1,237 @@
+# ToDo
+# ====
+#
+# This file lists items that have to be worked on.
+# An entry for an item has the following tags:
+# * Module: the concerned class or file
+# * Location: a more precise location, e.g. a function
+# * Description: a description of the item
+# * Priority: the priority of the item, may be
+# deferrable: of no/little relevance for OBOS R1 (to be future compatible:
+# the next release)
+# low: of relevance for the next release, but not needed in the
+# near future
+# medium: of relevance for the next release, needed in the near future
+# high: of relevance for the next release, needed as soon as possible
+# urgent: of relevance for the next release, needed yesterday, i.e.
+# some people depend on it being finished and can't continue
+# with their tasks otherwise
+#
+# * Requires: a list of prerequisites needed for the item to be worked on,
+# omitted, when empty
+# * Responsible: a list of people working on the item, omitted, when empty
+#
+
+Module: BEntry
+Location: Entry.cpp
+Description: Definition of SYMLINK_MAX belongs to some header file. Remove it.
+Priority: low
+
+
+Module: BEntry
+Location: SetTo(const BDirectory *, const char *, bool)
+Description: Reimplement! Concatenating dir and leaf to an absolute path
+ prevents the user from accessing entries with longer absolute
+ path. R5 handles this without problems.
+Priority: medium
+Requires: - OBOS kernel?
+
+
+Module: BEntry
+Location: SetTo(const BDirectory *, const char *, bool)
+Description: Reimplement! Implemented using StorageKit::entry_ref_to_path().
+Priority: low
+Requires: - OBOS kernel
+
+
+Module: EntryTest
+Location: InitTest1(), InitTest2()
+Description: Enable tests with strlen(dir + leaf) > B_PATH_NAME_LENGTH.
+Priority: low
+Requires: - reimpl. of SetTo(const BDirectory *, const char *, bool)
+
+
+Module: BPath
+Location: Flatten()
+Description: Reimplement for performance reasons. Don't call FlattenedSize().
+Priority: low
+
+
+Module: BVolume
+Location: operator==()
+Description: Implement.
+Priority: high
+
+
+Module: StatableTest
+Location: GetXYZTest()
+Description: Uncomment GetVolume() test, when BVolume::==() is implemented.
+Priority: low
+Requires: - implementation of BVolume::operator==()
+
+
+Module: kernel_interface
+Location: set_stat(const char*, StatMember)
+Description: Implement WSTAT_CRTIME.
+Priority: medium
+
+
+Module: kernel_interface
+Location: remove_attr()
+Description: Verify return behavior of fs_remove_attr().
+Priority: medium
+
+
+Module: BeOS R5::libroot
+Location:
+Description: Propose a project wide common handling of the
+ B_FILE/PATH_NAME_LENGTH (+ 1?) issue.
+Priority: low
+
+
+Module: BSymLink
+Location:
+Description: Remove the work-around introduced because of the missing FD
+ version of readlink().
+Priority: medium
+Requires: - OBOS kernel
+
+
+Module: BNode
+Location: SetTo(const entry_ref *)
+Description: Reimplement! Implemented using StorageKit::entry_ref_to_path().
+Priority: low
+Requires: - OBOS kernel
+
+
+Module: BNode
+Location: SetTo(const BEntry *)
+Description: Check if necessary to reimplement! Implemented using
+ SetTo(const entry_ref*).
+Priority: low
+Requires: - OBOS kernel
+
+
+Module: BNode
+Location: SetTo(const BDirectory*, const char*)
+Description: Check if necessary to reimplement! Implemented using
+ SetTo(const BEntry*).
+Priority: low
+Requires: - OBOS kernel
+
+
+Module: BNode
+Location: Lock(), Unlock()
+Description: Implement when kernel support is available.
+Priority: medium
+Requires: - OBOS kernel
+
+
+Module: NodeTest
+Location: SyncTest()
+Description: Add more thorough tests.
+Priority: low
+Requires: - OBOS kernel
+
+
+Module: NodeTest
+Location: LockTest()
+Description: Implement when kernel support is available.
+Priority: medium
+Requires: - OBOS kernel
+
+
+Module: BFile
+Location: SetTo(const entry_ref *, uint32)
+Description: Reimplement! Implemented using StorageKit::entry_ref_to_path().
+Priority: low
+Requires: - OBOS kernel
+
+
+Module: BFile
+Location: SetTo(const BEntry *, uint32)
+Description: Check if necessary to reimplement! Implemented using
+ SetTo(const entry_ref*, uint32).
+Priority: low
+Requires: - OBOS kernel
+
+
+Module: BFile
+Location: SetTo(const BDirectory*, const char*, uint32)
+Description: Check if necessary to reimplement! Implemented using
+ SetTo(const BEntry*, uint32).
+Priority: low
+Requires: - OBOS kernel
+
+
+Module: BFile
+Location: Read/Write[At]()
+Description: Verify behavior of B_OPEN_AT_END.
+Priority: medium
+
+
+Module: FileTest
+Location: PositionTest()
+Description: Uncomment test, when B_OPEN_AT_END behavior is understood.
+Priority: medium
+Requires: - verification of B_OPEN_AT_END behavior
+
+
+Module: BDirectory
+Location: SetTo(const entry_ref *)
+Description: Reimplement! Implemented using StorageKit::entry_ref_to_path().
+Priority: low
+Requires: - OBOS kernel
+
+
+Module: BDirectory
+Location: SetTo(const BEntry *)
+Description: Check if necessary to reimplement! Implemented using
+ SetTo(const entry_ref*).
+Priority: low
+Requires: - OBOS kernel
+
+
+Module: BDirectory
+Location: SetTo(const BDirectory*, const char*)
+Description: Check if necessary to reimplement! Implemented using
+ SetTo(const BEntry*).
+Priority: low
+Requires: - OBOS kernel
+
+
+Module: BDirectory
+Location: GetEntry()
+Description: Check if necessary to reimplement! Implemented using
+ StorageKit::dir_to_self_entry_ref().
+Priority: low
+Requires: - OBOS kernel
+
+
+Module: fs_info.h
+Location: struct fs_info
+Description: Change "char device_name[128]" to "char device_name[B_DEV_NAME_LENGTH]"
+ whenever appropriate, since B_DEV_NAME_LENGTH is now declared in
+ StorageDefs.h.
+Priority: low
+Requires: - filesystem support files in the source hierarchy
+
+
+Module: BQuery
+Location: SetTarget()
+Description: Used a bad hack to get port and token of the BMessenger. Fix it.
+Priority: low
+Requires: - respective function(s) to be provided by the IK team
+
+
+Module: BMimeType/MimeTypeTest
+Location: update_mime_info(), create_app_meta_mime()
+Description: Find out, what is the meaning of the force parameter. It does
+ obviously not mean, that calling the function twice, the second
+ time with force, has the same effect as calling it only at the
+ second time. At least the tests indicate, that the second call,
+ though with force, does not have any effect at all.
+Priority: medium
+Requires:
+
+
diff --git a/docs/develop/storage/doxygen_config b/docs/develop/storage/doxygen_config
new file mode 100644
index 0000000000..b5ced8aa62
--- /dev/null
+++ b/docs/develop/storage/doxygen_config
@@ -0,0 +1,691 @@
+# Doxyfile 1.2.1
+
+# This file describes the settings to be used by doxygen for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+# TAG = value [value, ...]
+# For lists items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# General configuration options
+#---------------------------------------------------------------------------
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
+# by quotes) that should identify the project.
+
+PROJECT_NAME = "OpenBeOS Storage Kit"
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
+# if some version control system is used.
+
+PROJECT_NUMBER =
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY =
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese,
+# Spanish, Russian, Croatian, Polish, and Portuguese.
+
+OUTPUT_LANGUAGE = English
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL = NO
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE = YES
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
+# will be included in the documentation.
+
+EXTRACT_STATIC = YES
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these class will be included in the various
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES = NO
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF = YES
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
+# description.
+
+ALWAYS_DETAILED_SEC = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES = YES
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. It is allowed to use relative paths in the argument list.
+
+STRIP_FROM_PATH = /cvsroot/open-beos/
+
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS = NO
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a class diagram (in Html and LaTeX) for classes with base or
+# super classes. Setting the tag to NO turns the diagrams off.
+
+CLASS_DIAGRAMS = YES
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+
+SOURCE_BROWSER = YES
+
+# Setting the INLINE_SOURCES tag to YES will include the body
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS = YES
+
+# If the CASE_SENSE_NAMES tag is set to NO (the default) then Doxygen
+# will only generate file names in lower case letters. If set to
+# YES upper case letters are also allowed. This is useful if you have
+# classes or files whose names only differ in case and if your file system
+# supports case sensitive file names.
+
+CASE_SENSE_NAMES = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS = YES
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put list of the files that are included by a file in the documentation
+# of that file.
+
+SHOW_INCLUDE_FILES = YES
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES (the default) then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the Javadoc-style will
+# behave just like the Qt-style comments.
+
+JAVADOC_AUTOBRIEF = YES
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
+# reimplements.
+
+INHERIT_DOCS = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
+# is inserted in the documentation for inline members.
+
+INLINE_INFO = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
+# declaration order.
+
+SORT_MEMBER_DOCS = YES
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE = 4
+
+# The ENABLE_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS =
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
+# commands in the documentation.
+
+GENERATE_TODOLIST = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
+# commands in the documentation.
+
+GENERATE_TESTLIST = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
+# NO is used.
+
+WARNINGS = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED = YES
+
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text.
+
+WARN_FORMAT = "$file:$line: $text"
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
+# with spaces.
+
+INPUT = ../source/lib/
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+FILE_PATTERNS = *.cpp *.h
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
+# If left blank NO is used.
+
+RECURSIVE = YES
+
+# The EXCLUDE tag can be used to specify files and/or directories that should
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE =
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories.
+
+EXCLUDE_PATTERNS =
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
+# the \include command).
+
+EXAMPLE_PATH =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+EXAMPLE_PATTERNS =
+
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
+# the \image command).
+
+IMAGE_PATH =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command , where
+# is the value of the INPUT_FILTER tag, and is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output.
+
+INPUT_FILTER =
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX = NO
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX = 5
+
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX =
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
+# generate HTML output.
+
+GENERATE_HTML = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT = html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard header.
+
+HTML_HEADER =
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard footer.
+
+HTML_FOOTER =
+
+# The HTML_STYLESHEET tag can be used to specify a user defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If the tag is left blank doxygen
+# will generate a default style sheet
+
+HTML_STYLESHEET =
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
+# files or namespaces will be aligned in HTML using tables. If set to
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP = NO
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
+# top of each HTML page. The value NO (the default) enables the index and
+# the value YES disables it.
+
+DISABLE_INDEX = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
+# generate Latex output.
+
+GENERATE_LATEX = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT = latex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_LATEX = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, a4wide, letter, legal and
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
+# higher quality PDF documentation.
+
+USE_PDFLATEX = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimised for Word 97 and may not look very pretty with
+# other RTF readers or editors.
+
+GENERATE_RTF = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_RTF = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using a WORD or other.
+# programs which support those fields.
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assigments. You only have to provide
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
+# generate man pages
+
+GENERATE_MAN = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT = man
+
+# The MAN_EXTENSION tag determines the extension that is added to
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION = .3
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will
+# generate an XML file that captures the structure of
+# the code including all documentation. Warning: This feature
+# is still experimental and very incomplete.
+
+GENERATE_XML = NO
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
+# files.
+
+ENABLE_PREPROCESSING = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
+# PREDEFINED and EXPAND_AS_PREDEFINED tags.
+
+EXPAND_ONLY_PREDEF = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
+# the preprocessor.
+
+INCLUDE_PATH =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
+# be used.
+
+INCLUDE_FILE_PATTERNS =
+
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed.
+
+PREDEFINED =
+
+# If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED =
+
+#---------------------------------------------------------------------------
+# Configuration::addtions related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES tag can be used to specify one or more tagfiles.
+
+TAGFILES =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE =
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
+# in the class index. If set to NO only the inherited external classes
+# will be listed.
+
+ALLEXTERNALS = NO
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz, a graph visualization
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT = NO
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect inheritance relations. Setting this tag to YES will force the
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect implementation dependencies (inheritance, containment, and
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH = YES
+
+# If the ENABLE_PREPROCESSING, INCLUDE_GRAPH, and HAVE_DOT tags are set to
+# YES then doxygen will generate a graph for each documented file showing
+# the direct and indirect include dependencies of the file with other
+# documented files.
+
+INCLUDE_GRAPH = YES
+
+# If the ENABLE_PREPROCESSING, INCLUDED_BY_GRAPH, and HAVE_DOT tags are set to
+# YES then doxygen will generate a graph for each documented header file showing
+# the documented files that directly or indirectly include this file
+
+INCLUDED_BY_GRAPH = YES
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY = YES
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found on the path.
+
+DOT_PATH =
+
+# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than
+# this value, doxygen will try to truncate the graph, so that it fits within
+# the specified constraint. Beware that most browsers cannot cope with very
+# large images.
+
+MAX_DOT_GRAPH_WIDTH = 1024
+
+# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than
+# this value, doxygen will try to truncate the graph, so that it fits within
+# the specified constraint. Beware that most browsers cannot cope with very
+# large images.
+
+MAX_DOT_GRAPH_HEIGHT = 1024
+
+#---------------------------------------------------------------------------
+# Configuration::addtions related to the search engine
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE = NO
+
+# The CGI_NAME tag should be the name of the CGI script that
+# starts the search engine (doxysearch) with the correct parameters.
+# A script with this name will be generated by doxygen.
+
+CGI_NAME = search.cgi
+
+# The CGI_URL tag should be the absolute URL to the directory where the
+# cgi binaries are located. See the documentation of your http daemon for
+# details.
+
+CGI_URL =
+
+# The DOC_URL tag should be the absolute URL to the directory where the
+# documentation is located. If left blank the absolute path to the
+# documentation, with file:// prepended to it, will be used.
+
+DOC_URL =
+
+# The DOC_ABSPATH tag should be the absolute path to the directory where the
+# documentation is located. If left blank the directory on the local machine
+# will be used.
+
+DOC_ABSPATH =
+
+# The BIN_ABSPATH tag must point to the directory where the doxysearch binary
+# is installed.
+
+BIN_ABSPATH = /usr/local/bin/
+
+# The EXT_DOC_PATHS tag can be used to specify one or more paths to
+# documentation generated for other projects. This allows doxysearch to search
+# the documentation for these projects as well.
+
+EXT_DOC_PATHS =
diff --git a/docs/develop/storage/resources/ResourcesFormat.tex b/docs/develop/storage/resources/ResourcesFormat.tex
new file mode 100644
index 0000000000..752db96f05
--- /dev/null
+++ b/docs/develop/storage/resources/ResourcesFormat.tex
@@ -0,0 +1,614 @@
+\documentclass[12pt, a4paper]{article}
+
+\usepackage{amssymb,amsmath,latexsym}
+\usepackage[english]{babel}
+\usepackage{hhline}
+
+\newcommand{\code}[1]{{\tt #1}}
+
+\newenvironment{nitemize}{
+ \newdimen\oldparindent
+ \oldparindent=\parindent
+ \begin{itemize}
+ \itemindent=-\oldparindent
+}{
+ \end{itemize}
+}
+
+%\newcommand{\codeblockspace}{\vspace{12pt}}
+
+% begin/end a code block
+\newcommand{\codeblockbegin}{\begin{flushleft}\begin{minipage}{\textwidth}}
+\newcommand{\codeblockend}{\end{minipage}\end{flushleft}}
+
+
+\begin{document}
+
+\sloppy
+
+\title{The Resources Format}
+%\date{}
+\author{Ingo Weinhold (bonefish@users.sf.net)}
+
+\maketitle
+\tableofcontents
+
+
+\section{Introduction}
+\label{introduction}
+
+Resources provide a means to store structured but flat data in files. Unlike
+attributes resources are part of the file contents and thus do not require a
+special file system handling, but rather a special file format.
+On the one hand there are formats of files that exclusively contain resources
+(resource files), on the other hand these are file formats extended to
+additionally contain resources -- namely the ELF and PEF object formats.
+In either case the format of the chunk of data that frames the resources
+themselves is the same. We call it the resources format.
+
+Section \ref{file-formats} explains how the resources format is embedded in
+different file formats. Section \ref{resources-format} discusses the resources
+format itself. In section \ref{implementations} we focus on robustness of
+resources reading/writing implementations.
+The final section says some words about the status of the information provided
+by this document.
+
+
+
+\section{File Formats}
+\label{file-formats}
+
+In all file formats described in this section the resources are being located
+at the end of the files. They are completely independent of their location.
+
+
+\subsection{x86 Resource Files}
+
+x86 resource files introduce the least overhead. The resources start directly
+after the magic number identifying the file format:
+%
+\codeblockbegin
+\begin{verbatim}
+ const char kX86ResourceFileMagic[4] = { 'R', 'S', 0, 0 };
+ const uint32 kX86ResourcesOffset = 0x00000004;
+\end{verbatim}
+\codeblockend
+%
+The resources start at \code{kX86ResourcesOffset}.
+
+
+\subsection{PPC Resource Files}
+
+PPC resource files begin with a PEF container header, after which the
+resources start.
+%
+\codeblockbegin
+\begin{verbatim}
+typedef char PefOSType[4];
+
+struct PEFContainerHeader {
+ PefOSType tag1;
+ PefOSType tag2;
+ PefOSType architecture;
+ uint32 formatVersion;
+ uint32 dateTimeStamp;
+ uint32 oldDefVersion;
+ uint32 oldImpVersion;
+ uint32 currentVersion;
+ uint16 sectionCount;
+ uint16 instSectionCount;
+ uint32 reservedA;
+};
+\end{verbatim}
+\codeblockend
+%
+\codeblockbegin
+\begin{verbatim}
+ const char kPEFFileMagic1[4] = { 'J', 'o', 'y', '!' };
+ const char kPPCResourceFileMagic[4] = { 'r', 'e', 's', 'f' };
+ const uint32 kPPCResourcesOffset = 0x00000028;
+\end{verbatim}
+\codeblockend
+
+\begin{nitemize}
+\item{\code{tag1}:
+ Must be \code{kPEFFileMagic1}.}
+\item{\code{tag2}:
+ Must be \code{kPPCResourceFileMagic}.}
+\item{All other fields must be set to 0.}
+\end{nitemize}
+
+\noindent
+The resources start at \code{kPPCResourcesOffset}.
+
+
+\subsection{ELF Object Files}
+
+In an ELF file, resources are appended to rather than contained in the
+regular data of the file. That is adding resources to an existing ELF file
+will not cause any modification to its data (i.e. ELF header, program header
+table, section header table or sections), but will enlarge the file by some
+alignment padding and, of course, the resources themselves.
+
+Therefore two values have to be known: The size of the actual ELF file and the
+block size to which the resources must be aligned. As ELF files do not contain
+a size field, it has to be deduced, where the file ends. This end offset is
+supposed to be the maximum of the end offsets of ELF header, program header
+table (if any), section header table (if any), sections and segments.
+
+The block size to which the resources have to be aligned is the maximum of
+\code{kELFMinResourceAlignment} and the alignments of the segments in the file.
+%
+\begin{verbatim}
+ const uint32 kELFMinResourceAlignment = 32;
+\end{verbatim}
+%
+The data used for the padding between the end of the actual ELF data and the
+beginning of the resources may be arbitrary.
+
+
+\subsection{PEF Object Files}
+
+Similar to ELF files the resources are simply appended to the regular data of
+a PEF file, but they are not aligned to any value. That is the resources
+start directly after the last PEF section without any padding.
+As no field exists, that tells about the size of the PEF container (the
+regular data), it has to be deduced by iterating through the PEF section
+headers.
+
+
+
+\section{The Resources Format}
+\label{resources-format}
+
+This section describes the resources format. After a subsection that outlines
+their general layout, it follow subsections discussing the major parts.
+
+A general remark regarding the byte ordering: Resources have no standard
+endianess, that is the resources created by little endian and big endian
+machines differ. Usually it should be possible, to deduce the used endianess
+from the type of the file. x86 resource files contain little endian, PPC
+resource files big endian data. The endianess of an ELF file is encoded in
+its header.
+
+As there is in fact no good reason to have different resource file formats,
+even if they differ only in the format of the header (see section
+\ref{file-formats}), it may be decided to use the x86 resource file format
+also for big endian machines. Therefore the endianess may be deduced by the
+first field of the resources header (\code{rh\_resources\_magic}, see
+subsection \ref{resources-header}).
+
+
+\subsection{Resources Layout}
+
+The layout of the resources in a file is shown in figure
+\ref{fig:resources-layout}.
+
+\begin{figure}[h!tb]
+ \begin{center}
+ \begin{tabular}{|c|c|c|}
+ \hline
+ & \multicolumn{2}{c|}{resources header}\\
+ \hhline{|~==|}
+ admin section & & index section header \\
+ \hhline{~~|-|}
+ & index section & resource index \\
+ \hhline{~~|-|}
+ & & padding \\
+ \hhline{:===:}
+ \multicolumn{3}{|c|}{unknown section}\\
+ \hhline{:===:}
+ \multicolumn{3}{|c|}{data section}\\
+ \hhline{|~~~|}
+ \hhline{:===:}
+ \multicolumn{3}{|c|}{info section}\\
+ \hline
+ \end{tabular}
+ \end{center}
+ \caption{The Resources Layout.}
+ \label{fig:resources-layout}
+\end{figure}
+
+\noindent
+There are four sections:
+%
+\begin{itemize}
+\item{An administrative section which comprises the resources header and the
+ resource index subsection. The latter locates all other data in the file.
+}
+\item{An unknown section, whose purpose is (unsurprisingly) unknown, but which
+ seems to be unused, always containing the same data.
+}
+\item{A data section holding the actual resource data.
+}
+\item{An info section, which provides aditional information for each resource,
+ such as type, id and name.
+}
+\end{itemize}
+
+
+\subsection{Resources Header}
+\label{resources-header}
+
+The resources header has the following structure:
+%
+\codeblockbegin
+\begin{verbatim}
+ struct resources_header {
+ uint32 rh_resources_magic;
+ uint32 rh_resource_count;
+ uint32 rh_index_section_offset;
+ uint32 rh_admin_section_size;
+ uint32 rh_pad[13];
+ };
+\end{verbatim}
+\codeblockend
+%
+\codeblockbegin
+\begin{verbatim}
+ const uint32 kResourcesHeaderMagic = 0x444f1000;
+ const uint32 kResourceIndexSectionOffset = 0x00000044;
+ const uint32 kResourceIndexSectionAlignment = 0x00000600;
+\end{verbatim}
+\codeblockend
+
+\begin{nitemize}
+\item{\code{rh\_resources\_magic}:
+ Must be \code{kResourcesHeaderMagic}.
+}
+\item{\code{rh\_resource\_count}:
+ Specifies the number of resources stored in this file. May be 0.
+}
+\item{\code{rh\_index\_section\_offset}:
+ Specifies the offset of the resource index section relative to the beginning
+ of the resources. An alternative interpretation may be the size of the
+ resources header.
+ Must be \code{kResourceIndexSectionOffset}.
+}
+\item{\code{rh\_admin\_section\_size}:
+ Specifies the size of the administrative section.
+ Must be \code{kResourceIndexSectionOffset} plus a multiple of
+ \code{kResourceIndexSectionAlignment}.
+}
+\item{\code{rh\_pad}:
+ Padding. \code{0x00000000} words.
+}
+\end{nitemize}
+
+
+\subsection{Resource Index Section}
+\label{resources-index}
+
+The resource index section starts with a header, it follows a table of
+\code{resource\_index\_entry} structures, that locates the data of each
+resource, and the section ends with a special padding.
+
+\noindent
+The resource index header has the following structure:
+%
+\codeblockbegin
+\begin{verbatim}
+ struct resource_index_section_header {
+ uint32 rish_index_section_offset;
+ uint32 rish_index_section_size;
+ uint32 rish_unused_data1;
+ uint32 rish_unknown_section_offset;
+ uint32 rish_unknown_section_size;
+ uint32 rish_unused_data2[25];
+ uint32 rish_info_table_offset;
+ uint32 rish_info_table_size;
+ uint32 rish_unused_data3;
+ };
+\end{verbatim}
+\codeblockend
+
+\begin{verbatim}
+ const uint32 kUnknownResourceSectionSize = 0x00000168;
+\end{verbatim}
+%
+\begin{nitemize}
+\item{\code{rish\_index\_section\_offset}:
+ Specifies the offset of the resource index section relative to the beginning
+ of the resources. An alternative interpretation may be the size of the
+ resources header.
+ Must be \code{kResourceIndexSectionOffset}.
+}
+\item{\code{rish\_index\_section\_size}:
+ Specifies the size of the resource index section.
+ Must be a multiple of \code{kResourceIndexSectionAlignment}.
+}
+\item{\code{rish\_unused\_data1}:
+ Contains special data as described in section \ref{resources-unknown}.
+}
+\item{\code{rish\_unknown\_section\_offset}:
+ Specifies the offset of the unknown section relative to the beginning
+ of the resources.
+ Must be the same value as given in the resources header for
+ \code{rh\_admin\_section\_size}.
+}
+\item{\code{rish\_unknown\_section\_size}:
+ Specifies the offset of the unknown section relative to the beginning
+ of the resources.
+ Must be \code{kUnknownResourceSectionSize};
+}
+\item{\code{rish\_unused\_data2}:
+ Contains special data as described in section \ref{resources-unknown}.
+}
+\item{\code{rish\_info\_table\_offset}:
+ Specifies the offset of the resource info table relative to the beginning
+ of the resources.
+}
+\item{\code{rish\_info\_table\_size}:
+ Specifies the size of the resource info table.
+}
+\item{\code{rish\_unused\_data3}:
+ Contains special data as described in section \ref{resources-unknown}.
+}
+\end{nitemize}
+
+Directly, without padding, it follows a table of \code{resource\_index\_entry}
+structures. The number of entries in the table is the number of resources
+stored in the file, that is the value specified by the
+\code{rh\_resource\_count} member of the resources header. Since the entries
+are stored without padding, the size of the table is exactly the product of
+the size of \code{resource\_index\_entry} and the number of resources.
+If the latter is 0, the table takes no space.
+%
+\codeblockbegin
+\begin{verbatim}
+ struct resource_index_entry {
+ uint32 rie_offset;
+ uint32 rie_size;
+ uint32 rie_pad;
+ };
+\end{verbatim}
+\codeblockend
+%
+\begin{nitemize}
+\item{\code{rie\_offset}:
+ Specifies the offset of the resource data relative to the beginning
+ of the resources.
+}
+\item{\code{rie\_size}:
+ Specifies the size of the resource data.
+}
+\item{\code{rie\_pad}:
+ Padding. Must be \code{0x00000000}.
+}
+\end{nitemize}
+
+Since the size of the resource index section must be a multiple of
+\code{kResourceIndexSectionAlignment}, some padding may be needed at the end
+of this section. How this padding looks like is described in section
+\ref{resources-unknown}.
+
+
+\subsection{Unknown Section}
+\label{resources-unknown}
+
+The meaning of this section is unknown. It does not seem to be used at all.
+It always contains the same data given by \code{kUnusedResourceDataPattern}:
+%
+\codeblockbegin
+\begin{verbatim}
+ const uint32 kUnusedResourceDataPattern[3] = {
+ 0xffffffff, 0x000003e9, 0x00000000
+ };
+\end{verbatim}
+\codeblockend
+%
+In section \ref{resources-index} some members where named \code{unused\_data}.
+These fields contain the same kind of data. To understand what the value for a
+certain field of this type is, it may help to imagine, that before the
+resources are written to a file, the space they will take is filled with the
+pattern specified by \code{kUnusedResourceDataPattern}, and that only those
+fields are written that are not unused. Thus the original pattern can be seen
+through at the unused locations.
+
+To be precise: Let \verb|uint32 resources[]| be the resources and
+\code{index} the index of an unused field in \code{resources}, then it holds:
+%
+\begin{verbatim}
+ resources[index] == kUnusedResourceDataPattern[index % 3];
+\end{verbatim}
+%
+
+
+\subsection{Resource Info Table}
+\label{resources-infotable}
+
+The resource info table features exactly one entry for each resource.
+Such an entry (resource info) specifies the ID and name of a
+resource. Subsequent infos for resources of the same type are collected in
+a block that starts with a type field.
+
+The following grammar specifies the layout of the resource info table.
+Nonterminals start with an upper case, terminals with a lower case letter.
+%
+\begin{verbatim}
+ ResourceInfoTable ::= [ ResourceBlockList ]
+ ResourceInfoSeparator
+ ResourceInfoTableEnd
+
+ ResourceBlockList ::= ResourceBlock
+ [ ResourceInfoSeparator
+ ResourceBlockList ]
+
+ ResourceBlock ::= type ResourceInfoList
+
+ ResourceInfoList ::= ResourceInfo [ ResourceInfoList ]
+
+ ResourceInfo ::= id index name_size name
+
+ ResourceInfoSeparator ::= 0xffffffff 0xffffffff
+
+ ResourceInfoTableEnd ::= check_sum 0x00000000
+\end{verbatim}
+%
+The relevant structures follow:
+%
+\codeblockbegin
+\begin{verbatim}
+ struct resource_info_block {
+ type_code rib_type;
+ resource_info rib_info[1];
+ };
+\end{verbatim}
+\codeblockend
+%
+\begin{nitemize}
+\item{\code{rib\_type}:
+ Specifies the type of the resources in the block.
+}
+\item{\code{rib\_info}:
+ Is the first resource info of the block. More infos may follow.
+}
+\end{nitemize}
+%
+\codeblockbegin
+\begin{verbatim}
+ struct resource_info {
+ int32 ri_id;
+ int32 ri_index;
+ uint16 ri_name_size;
+ char ri_name[1];
+ };
+\end{verbatim}
+\codeblockend
+
+\begin{verbatim}
+ const uint32 kMinResourceInfoSize = 10;
+\end{verbatim}
+%
+\begin{nitemize}
+\item{\code{ri\_id}:
+ Specifies the ID of the resource.
+}
+\item{\code{ri\_index}:
+ Specifies the index of the resource this resource info refers to.
+}
+\item{\code{ri\_name\_size}:
+ Specifies the size of the resource name. May be 0 -- then the resource does
+ not have a name and \code{ri\_name} has a size of 0.
+}
+\item{\code{ri\_name}:
+ Specifies the name of the resource. The name must be null terminated.
+ \code{ri\_name\_size} specifies the size of this field (including the
+ terminating null). If it is 0, the resource does not have a name and
+ \code{ri\_name} is empty, i.e. has size 0.
+}
+\item{\code{kMinResourceInfoSize}:
+ Is the minimal size of a resource info. That is the size it has, if the
+ resource does not have a name.
+}
+\end{nitemize}
+%
+\codeblockbegin
+\begin{verbatim}
+ struct resource_info_separator {
+ uint32 ris_value1;
+ uint32 ris_value2;
+ };
+\end{verbatim}
+\codeblockend
+%
+\begin{nitemize}
+\item{\code{ris\_value1}:
+ Specifies the first word of the separator.
+ Must be \code{0xffffffff}.
+}
+\item{\code{ris\_value2}:
+ Specifies the second word of the separator.
+ Must be \code{0xffffffff}.
+}
+\end{nitemize}
+%
+\codeblockbegin
+\begin{verbatim}
+ struct resource_info_table_end {
+ uint32 rite_check_sum;
+ uint32 rite_terminator;
+ };
+\end{verbatim}
+\codeblockend
+%
+\begin{nitemize}
+\item{\code{rite\_check\_sum}:
+ Contains the check sum for the resource info table. The check sum is
+ calculated from all bytes of the resource info table not including
+ \code{rite\_check\_sum} and \code{rite\_terminator}. The data are grouped
+ into four byte blocks, which are interpreted as big endian unsigned words
+ and summed up, ignoring carry. If the number of bytes to be considered is
+ not dividable by four, the remaining bytes are interpreted as the lower
+ bytes of a big endian unsigned word (the upper byte(s) set to 0).
+}
+\item{\code{rite\_terminator}:
+ Terminates the resource info table.
+ Must be \code{0x00000000}.
+}
+\end{nitemize}
+
+
+
+\section{Implementations}
+\label{implementations}
+
+Code that writes resources should strictly stick to the specification
+presented in the preceding sections to achieve maximal compatibility.
+
+Resources reading implementations may tolerate certain deviations that
+for instance happen to occur in several files of the BeOS R5 distribution
+and that are handled gracefully by xres and QuickRes. It follows a, possibly
+incomplete, list:
+%
+\begin{itemize}
+\item{The third and fourth byte of the x86 resource file magic (the 0 bytes)
+ may be arbitrary bytes.}
+\item{\code{rh\_resource\_count} may be unreliable. The resource index table
+ should be read until its end, which is either marked by the unused data
+ pattern (see section \ref{resources-unknown}) or at the latest by the
+ beginning of the unknown section.}
+\item{The resource info table may contain entries for indices that are out
+ of range, i.e. greater than the number of resources induced by the resource
+ index table. Those entries should be ignored.}
+\item{The resource info table may contain multiple entries for an index.
+ Any such entry after the first one should be ignored.}
+\item{The resource info table may not contain an entry for an index.
+ The respective resource should be ignored.}
+\item{The resource info table may not contain a \code{ResourceInfoTableEnd}
+ (see section \ref{resources-infotable}) and thus no check sum. The table
+ should be accepted nevertheless. Note, that a table containing a wrong check
+ sum is {\em not} to be accepted.}
+\end{itemize}
+
+
+
+\section{Status of this Document}
+\label{status}
+
+The information contained in this document are obtained by analyzing
+resources-containing files created or modified by tools available for BeOS R5,
+namely QuickRes and xres. They are incomplete and may even be partially wrong,
+where being based on incorrect assumptions.
+
+\noindent
+It follows a list of items with a low degree of reliance:
+\begin{itemize}
+\item{Resources alignment in ELF files: Several tests with linker object files
+ have shown, that QuickRes aligns their resources offset to 32 bytes.
+ For executables on the other hand the alignment was always 4096, which is
+ the usual memory page size of current x86 architectures and therefore the
+ preferred program segment alignment. From these two information it has been
+ deduced, that the alignment is, if present, the maximum of
+ the segment alignments to be found in the program header table,
+ but at minimum 32.}
+\item{The resources layout: The general layout of the resources is not very
+ well understood. The layout presented in figure \ref{fig:resources-layout}
+ resulted from the attempt to assign all the fields a reasonable meaning, but
+ in fact not even the exact length and meaning of the fields of the resources
+ header is unclear. The same holds for the resource index section header.}
+\item{The unknown section: The contents of the unknown section and of unknown
+ fields is base on educated guesses.}
+\end{itemize}
+
+\end{document}
diff --git a/docs/develop/support/usecases/BAutolockUseCases.html b/docs/develop/support/usecases/BAutolockUseCases.html
new file mode 100644
index 0000000000..9195f64f9b
--- /dev/null
+++ b/docs/develop/support/usecases/BAutolockUseCases.html
@@ -0,0 +1,79 @@
+
+
+
+BAutolock Use Cases and Implementation Details
+
+
+
+
+
+
+BAutolock Use Cases and Implementation Details:
+
+This document describes the BAutolock interface and some basics of how it is implemented.
+The document has the following sections:
+
+
+- BAutolock Interface
+- BAutolock Use Cases
+- BAutolock Implementation
+
+
+BAutolock Interface:
+
+The BAutolock class is a simple class for handling synchronization between threads. The best
+source of information for the BAutolock interface can be found
+here in the Be Book.
+
+
+BAutolock Use Cases:
+
+The following use cases cover the BAutolock functionality:
+
+
+Construction 1: A BAutolock can be created by passing a pointer to a BLocker object.
+An attempt will be made to Lock() this BLocker during the construction of the BAutolock object.
+
+
+Construction 2: A BAutolock can be created by passing a reference to a BLocker object.
+An attempt will be made to Lock() this BLocker during the construction of the BAutolock object.
+
+
+Construction 3: A BAutolock can be created by passing a pointer to a BLooper object.
+An attempt will be made to Lock() this BLooper during the construction of the BAutolock object.
+
+
+Is Locked: When the BAutolock is constructed, a lock is attempted on the BLocker or
+BLooper passed in. The result of that lock attempt is returned by calling IsLocked() on the
+BAutolock. The result is a boolean. True is returned if the lock was successfully acquired.
+False is returned if the lock could not be acquired. See the docs for BLocker and BLooper to
+find out why the lock acquisition may fail.
+
+Destruction 1: If the lock acquisition on the BLocker or BLooper was successful at
+construction time, when the BAutolock is destructed, the lock will be released by calling Unlock()
+on the BLocker or BLooper.
+
+Destruction 2: If the lock acquisition on the BLocker or BLooper failed at
+construction time, when the BAutolock is destructed, nothing is done to the BLocker or the BLooper.
+An Unlock() is not attempted because the lock at construction time failed.
+
+
+
+BAutolock Implementation:
+
+The entire BAutolock implementation is inline. Because BAutolock is implemented inline, there
+is no code for BAutolock in libbe.so. The code is all in Be's Autolock.h header file and compiled
+at build time directly into any object being built.
+
+This has some interesting implications from a backwards compatibility perspective. Because
+there are no references from existing non-Be executables and libraries to libbe.so expecting
+to find the BAutolock class, the entire definition of BAutolock can be changed almost without risk
+of breaking compatibility. This gives anyone wishing to expand and build on the current BAutolock
+class a great deal of flexibility.
+
+However, it may be worthwhile when changing BAutolock in the future to try and stay source
+compatible. That way, existing source code will continue to compile without having to update
+it.
+
+
+
diff --git a/docs/develop/support/usecases/BLockerUseCases.html b/docs/develop/support/usecases/BLockerUseCases.html
new file mode 100644
index 0000000000..18bccbf8e8
--- /dev/null
+++ b/docs/develop/support/usecases/BLockerUseCases.html
@@ -0,0 +1,130 @@
+
+
+
+BLocker Use Cases and Implementation Details
+
+
+
+
+
+
+BLocker Use Cases and Implementation Details:
+
+This document describes the BLocker interface and some basics of how it is implemented.
+The document has the following sections:
+
+
+- BLocker Interface
+- BLocker Use Cases
+- BLocker Implementation
+
+
+BLocker Interface:
+
+The BLocker class is a simple class for handling synchronization between threads. The best
+source of information for the BLocker interface can be found
+here in the Be Book.
+
+
+BLocker Use Cases:
+
+The following use cases cover the BLocker functionality:
+
+
+Construction 1: A BLocker can be created by specifying a name for the semaphore used
+internally. If a name is specified during construction, then that name is given to the internal
+semaphore. If no name is given at construction, the semaphore is given the name "some BLocker".
+
+
+Construction 2: A BLocker can use a semaphore or a "benaphore" internally depending
+on a flag passed when the BLocker is created. If the flag is false, the BLocker uses a semaphore
+to do synchronization. If the flag is true, the BLocker uses a benaphore internally to do
+synchronization. If no flag is specified, the BLocker uses a benaphore internally.
+
+Destruction: When a BLocker is destructed, any threads waiting for the lock are
+immediately unblocked. The threads are notified by the return code of the locking member function
+that the lock was not successfully acquired. Any threads blocked on Lock() will return with
+a false value. Any threads blocked on LockWithTimeout() will return with B_BAD_SEM_ID.
+
+Locking 1: When a thread acquires the BLocker using the Lock() or LockWithTimeout()
+member functions, no other thread can acquire the lock until this thread releases it.
+
+Locking 2: When a thread holds the BLocker and it calls Lock() or LockWithTimeout(),
+the member function returns immediately. The thread must call Unlock() the same number of times
+it calls Lock...() before the BLocker is released. At any time, the thread can call CountLocks()
+to get the number of times it must call Unlock() to release the BLocker.
+
+Locking 3: When a thread calls Lock(), the thread blocks until it can acquire the
+lock. Once the lock has been acquired or an unrecoverable error has occurred, the Lock() member
+function completes. If the lock has been acquired, Lock() returns true. If the lock has not
+been acquired, Lock() returns false.
+
+Locking 4: When a thread calls LockWithTimeout(), the thread blocks until it can
+acquire the lock, the time specified in microseconds expires, or an unrecoverable error occurs.
+If the timeout specified is B_INFINTE_TIMEOUT, there is no timeout and the member function will
+either acquire the lock or fail due to an unrecoverable error. If the lock is acquired, the
+member function returns B_OK. If the timeout is reached, B_TIMED_OUT is returned and the lock is
+not acquired. If a serious error occurs, a non B_OK code is returned.
+
+Unlocking: The Unlock() member function takes no arguments and returns no value.
+If the thread currently holds the lock, the lock count is reduced by the call to Unlock(). If
+the lock count reaches zero, then another thread may acquire the lock. If the thread does not
+hold the lock and it calls Unlock(), the call will have no affect at all on the BLocker.
+
+Locking Thread: The LockingThread() member function returns the thread_id of the
+thread that is holding the lock. If no thread holds the lock, then B_ERROR is returned.
+
+Is Locked: The IsLocked() member function returns true if the BLocker is currently
+held by the calling thread. If the BLocker is not acquired by any thread or it is acquired by a
+different thread, IsLocked() returns false.
+
+Count Locks: The CountLocks() member function returns the number of times the lock
+has been acquired by the thread which holds the lock. If no thread holds the lock, then 0 is
+returned. If the BLocker is held by any thread, including a thread which is not the thread
+making the CountLocks() request, the number of times the lock has been acquired by the thread which
+holds the lock is returned.
+
+Count Lock Requests: The CountLockRequests() member function returns the number of
+threads currently attempting to lock the BLocker. If no thread holds the lock and no thread is
+waiting for the lock, then 0 is returned. If one thread holds the lock and no other threads
+are waiting for the lock, then 1 is returned. If one thread holds the lock and x threads are
+waiting for the lock, then x+1 is returned. The call to CountLockRequests() can be made by any
+thread including threads which do not have the lock.
+
+NOTE: Reading the Be Book, that would seem like what is returned by this member
+function. In actuality, the value returned is just the "benaphore count" for the BLocker.
+If the BLocker is semaphore style, then the benaphore count is set to 1 at construction time
+to ensure that the semaphore is always tested when a lock is acquired. The return value is
+just this count. So, the return value for benaphore style is:
+
+
+numThreadsWaitingForTheLock + numThreadsHoldingTheLock + numOfTimeoutsOccuredOnTheLock
+
+
+The return value for a semaphore style is:
+
+
+numThreadsWaitingForTheLock + numThreadsHoldingTheLock + numOfTimeoutsOccuredOnTheLock + 1
+
+
+Again, this is what we are implementing but the above description is what appears in the
+BeBook as far as I understand it.
+
+
+Sem: The Sem() member function returns the sem_id of the semaphore used by the
+BLocker. If the BLocker is a benaphore, then the sem_id returned is the semaphore used to
+implement the benaphore. If the BLocker is a not a benaphore, then the sem_id returned is the
+semaphore which the BLocker represents.
+
+
+BLocker Implementation:
+
+For more information about how to implement a benaphore, you can reference an implementation
+found on Be's website at
+
+http://www-classic.be.com/aboutbe/benewsletter/Issue26.html.
+
+
+
+
+
diff --git a/docs/develop/virtualmemory/README.XML b/docs/develop/virtualmemory/README.XML
new file mode 100644
index 0000000000..5112038f9f
--- /dev/null
+++ b/docs/develop/virtualmemory/README.XML
@@ -0,0 +1,147 @@
+
+
+ Virtual Memory
+
+ 0.9
+
+
+
+ Matt McMinn
+ melfinadev@earthlink.net
+ http://home.earthlink.net/~melfina/
+
+
+
+
+
+ It's just a copy of the virtual memory preferences app that comes with BeOS.
+
+
+
+
+
+
+
+ 1
+
+
+ Matthieu Ferte
+ mferte@club-internet.fr
+
+
+
+
+ Get the physical memory in a better way.
+
+
+
+
+
+
+ #include
+
+ int physMem;
+
+ system_info info;
+ get_system_info(&info);
+ physMem = (info.max_pages * 4096) / 1048576;
+
+
+
+
+
+
+
+
+ 2
+
+
+ Matthieu Ferte
+ mferte@club-internet.fr
+
+
+
+
+ Get the current memory by reading the file.
+
+
+
+
+
+
+ #include
+
+ int currSwap;
+
+ const char *swap_file;
+ swap_file = "/boot/var/swap";
+ BEntry swap(swap_file);
+ off_t swapsize;
+ swap.GetSize(&swapsize);
+ currSwap = swapsize / 1048576;
+
+
+
+
+
+
+
+
+ 3
+
+
+ Matthieu Ferte
+ mferte@club-internet.fr
+
+
+
+
+ Equation that calculates the minimum swap size is wrong (not linear).
+
+
+
+
+
+
+ I got the values on my computer with the original vm app :
+ Ram 256 Mb -> Swap 341 Mb
+ Ram 512 Mb -> Swap 640 Mb
+ Ram 768 Mb -> Swap 886 Mb
+ Ram 1024 Mb -> Swap 1133 Mb
+
+ With obos app i got :
+ Ram 256 Mb -> Swap 341 Mb
+ Ram 512 Mb -> Swap 683 Mb
+ Ram 768 Mb -> Swap 1024 Mb
+ Ram 1024 Mb -> Swap 1365 Mb
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10/31/2001
+ Initial release. Visually complete.
+
+
+
+
+
+
+
+ Even tho it wasn't really necessary, I know I've overdocumented this app.
+ My excuse is that I wanted to learn how to use doxygen, and this was a
+ good app to run it on. So if you want full documentation, and you have
+ doxygen installed, available from BeBits, run doxygen .doxygen-conf
+ in the code directory, and it will create docs for you.
+
+
+
+
\ No newline at end of file
diff --git a/docs/develop/virtualmemory/readme b/docs/develop/virtualmemory/readme
new file mode 100644
index 0000000000..7676e211e6
--- /dev/null
+++ b/docs/develop/virtualmemory/readme
@@ -0,0 +1,19 @@
+Virtual Memory Preferences App
+By: Matt McMinn
+melfinadev@earthlink.net
+http://home.earthlink.net/~melfina/
+
+Introduction
+It's just a copy of the virtual memory preferences app that comes with BeOS. It works.
+
+Documentation
+Even tho it wasn't really necessary, I know I've overdocumented this app, My excuse is that I wanted to learn how to use doxygen, and this was a good app to run it on. So if you want full documentation, and you have doxygen installed, available from BeBits, run
+doxygen .doxygen-conf
+in the code directory, and it will create docs for you
+
+Version
+1.0: 1/28/2002
+Hey, it works. You can set your virtual memory size just like in the actual app.
+
+0.9: 10/31/2001
+Initial release. Visually complete.
\ No newline at end of file
diff --git a/headers/os/BeBuild.h b/headers/os/BeBuild.h
new file mode 100644
index 0000000000..e8efc29924
--- /dev/null
+++ b/headers/os/BeBuild.h
@@ -0,0 +1,547 @@
+/******************************************************************************
+/
+/ File: BeBuild.h
+/
+/ Description: Import/export macros
+/
+/ Copyright 1993-98, Be Incorporated
+/
+*******************************************************************************/
+
+#ifndef _BE_BUILD_H
+#define _BE_BUILD_H
+
+#define B_BEOS_VERSION_4 0x0400
+#define B_BEOS_VERSION_4_5 0x0450
+#define B_BEOS_VERSION_5 0x0500
+
+#define B_BEOS_VERSION B_BEOS_VERSION_5
+#define B_BEOS_VERSION_MAUI B_BEOS_VERSION_5
+
+#if defined(__powerc) || defined(powerc)
+ #define _PR2_COMPATIBLE_ 1
+ #define _PR3_COMPATIBLE_ 1
+ #define _R4_COMPATIBLE_ 1
+ #define _R4_5_COMPATIBLE_ 1
+#else
+ #define _PR2_COMPATIBLE_ 0
+ #define _PR3_COMPATIBLE_ 0
+ #define _R4_COMPATIBLE_ 1
+ #define _R4_5_COMPATIBLE_ 1
+#endif
+
+
+#if __MWERKS__
+#define _UNUSED(x)
+#define _PACKED
+#endif
+
+#if __GNUC__
+#define _UNUSED(x) x
+#define _PACKED __attribute__((packed))
+#endif
+
+#if _STATIC_LINKING
+
+#define _EXPORT
+#define _IMPORT
+#define _IMPEXP_KERNEL
+#define _IMPEXP_GL
+#define _IMPEXP_ROOT
+#define _IMPEXP_NET
+#define _IMPEXP_NETDEV
+#define _IMPEXP_ATALK
+#define _IMPEXP_BE
+#define _IMPEXP_TRACKER
+#define _IMPEXP_MAIL
+#define _IMPEXP_DEVICE
+#define _IMPEXP_MEDIA
+#define _IMPEXP_MIDI
+#define _IMPEXP_MIDI2
+#define _IMPEXP_GAME
+#define _IMPEXP_GSOUND
+#define _IMPEXP_TRANSLATION
+#define _IMPEXP_TEXTENCODING
+#define _IMPEXP_INPUT
+
+#else
+
+#if __INTEL__
+
+#define _EXPORT __declspec(dllexport)
+#define _IMPORT __declspec(dllimport)
+
+#if _BUILDING_kernel
+#define _IMPEXP_KERNEL __declspec(dllexport)
+#else
+#define _IMPEXP_KERNEL __declspec(dllimport)
+#endif
+
+#if _BUILDING_root
+#define _IMPEXP_ROOT __declspec(dllexport)
+#else
+#define _IMPEXP_ROOT __declspec(dllimport)
+#endif
+
+#if _BUILDING_net
+#define _IMPEXP_NET __declspec(dllexport)
+#else
+#define _IMPEXP_NET __declspec(dllimport)
+#endif
+
+#if _BUILDING_netdev
+#define _IMPEXP_NETDEV __declspec(dllexport)
+#else
+#define _IMPEXP_NETDEV __declspec(dllimport)
+#endif
+
+#if _BUILDING_atalk
+#define _IMPEXP_ATALK __declspec(dllexport)
+#else
+#define _IMPEXP_ATALK __declspec(dllimport)
+#endif
+
+#if _BUILDING_be
+#define _IMPEXP_BE __declspec(dllexport)
+#else
+#define _IMPEXP_BE __declspec(dllimport)
+#endif
+
+#if _BUILDING_gl
+#define _IMPEXP_GL __declspec(dllexport)
+#else
+#define _IMPEXP_GL __declspec(dllimport)
+#endif
+
+#if _BUILDING_tracker
+#define _IMPEXP_TRACKER __declspec(dllexport)
+#else
+#define _IMPEXP_TRACKER __declspec(dllimport)
+#endif
+
+#if _BUILDING_mail
+#define _IMPEXP_MAIL __declspec(dllexport)
+#else
+#define _IMPEXP_MAIL __declspec(dllimport)
+#endif
+
+#if _BUILDING_device
+#define _IMPEXP_DEVICE __declspec(dllexport)
+#else
+#define _IMPEXP_DEVICE __declspec(dllimport)
+#endif
+
+#if _BUILDING_media
+#define _IMPEXP_MEDIA __declspec(dllexport)
+#else
+#define _IMPEXP_MEDIA __declspec(dllimport)
+#endif
+
+#if _BUILDING_midi2
+#define _IMPEXP_MIDI2 __declspec(dllexport)
+#else
+#define _IMPEXP_MIDI2 __declspec(dllimport)
+#endif
+
+#if _BUILDING_midi
+#define _IMPEXP_MIDI __declspec(dllexport)
+#else
+#define _IMPEXP_MIDI __declspec(dllimport)
+#endif
+
+#if _BUILDING_game
+#define _IMPEXP_GAME __declspec(dllexport)
+#else
+#define _IMPEXP_GAME __declspec(dllimport)
+#endif
+
+#if _BUILDING_gsound
+#define _IMPEXP_GSOUND __declspec(dllexport)
+#else
+#define _IMPEXP_GSOUND __declspec(dllimport)
+#endif
+
+#if _BUILDING_translation
+#define _IMPEXP_TRANSLATION __declspec(dllexport)
+#else
+#define _IMPEXP_TRANSLATION __declspec(dllimport)
+#endif
+
+#if _BUILDING_textencoding
+#define _IMPEXP_TEXTENCODING __declspec(dllexport)
+#else
+#define _IMPEXP_TEXTENCODING __declspec(dllimport)
+#endif
+
+#if _BUILDING_input
+#define _IMPEXP_INPUT __declspec(dllexport)
+#else
+#define _IMPEXP_INPUT __declspec(dllimport)
+#endif
+
+#endif /* __INTEL__ */
+
+#if __POWERPC__
+
+#define _EXPORT __declspec(dllexport)
+#define _IMPORT __declspec(dllimport)
+
+#define _IMPEXP_KERNEL
+#define _IMPEXP_GL
+#define _IMPEXP_ROOT
+#define _IMPEXP_NET
+#define _IMPEXP_NETDEV
+#define _IMPEXP_ATALK
+#define _IMPEXP_BE
+#define _IMPEXP_TRACKER
+#define _IMPEXP_MAIL
+#define _IMPEXP_DEVICE
+#define _IMPEXP_MEDIA
+#define _IMPEXP_MIDI
+#define _IMPEXP_MIDI2
+#define _IMPEXP_GAME
+#define _IMPEXP_GSOUND
+#define _IMPEXP_TRANSLATION
+#define _IMPEXP_TEXTENCODING
+#define _IMPEXP_INPUT
+
+#endif
+
+#if __SH__
+
+#define _EXPORT
+#define _IMPORT
+
+#define _IMPEXP_KERNEL
+#define _IMPEXP_GL
+#define _IMPEXP_ROOT
+#define _IMPEXP_NET
+#define _IMPEXP_NETDEV
+#define _IMPEXP_ATALK
+#define _IMPEXP_BE
+#define _IMPEXP_TRACKER
+#define _IMPEXP_MAIL
+#define _IMPEXP_DEVICE
+#define _IMPEXP_MEDIA
+#define _IMPEXP_MIDI
+#define _IMPEXP_GAME
+#define _IMPEXP_GSOUND
+#define _IMPEXP_TRANSLATION
+#define _IMPEXP_TEXTENCODING
+#define _IMPEXP_INPUT
+
+#endif
+
+#endif
+
+
+#ifdef __cplusplus
+
+/* cpp kit */
+
+/* -- */
+class _IMPEXP_ROOT bad_cast;
+class _IMPEXP_ROOT bad_typeid;
+class _IMPEXP_ROOT type_info;
+
+/* -- */
+class _IMPEXP_ROOT exception;
+class _IMPEXP_ROOT bad_exception;
+
+/* -- */
+class _IMPEXP_ROOT bad_alloc;
+
+/* -- */
+class _IMPEXP_ROOT logic_error;
+class _IMPEXP_ROOT domain_error;
+class _IMPEXP_ROOT invalid_argument;
+class _IMPEXP_ROOT length_error;
+class _IMPEXP_ROOT out_of_range;
+class _IMPEXP_ROOT runtime_error;
+class _IMPEXP_ROOT range_error;
+class _IMPEXP_ROOT overflow_error;
+
+/* support kit */
+class _IMPEXP_BE BArchivable;
+class _IMPEXP_BE BAutolock;
+class _IMPEXP_BE BBlockCache;
+class _IMPEXP_BE BBufferIO;
+class _IMPEXP_BE BDataIO;
+class _IMPEXP_BE BPositionIO;
+class _IMPEXP_BE BMallocIO;
+class _IMPEXP_BE BMemoryIO;
+class _IMPEXP_BE BFlattenable;
+class _IMPEXP_BE BList;
+class _IMPEXP_BE BLocker;
+class _IMPEXP_BE BStopWatch;
+class _IMPEXP_BE BString;
+
+class _IMPEXP_BE PointerList;
+
+/*storage kit */
+struct _IMPEXP_BE entry_ref;
+struct _IMPEXP_BE node_ref;
+class _IMPEXP_BE BAppFileInfo;
+class _IMPEXP_BE BDirectory;
+class _IMPEXP_BE BEntry;
+class _IMPEXP_BE BFile;
+class _IMPEXP_BE BRefFilter;
+class _IMPEXP_BE BMimeType;
+class _IMPEXP_BE BNode;
+class _IMPEXP_BE BNodeInfo;
+class _IMPEXP_BE BPath;
+class _IMPEXP_BE BQuery;
+class _IMPEXP_BE BResources;
+class _IMPEXP_BE BResourceStrings;
+class _IMPEXP_BE BStatable;
+class _IMPEXP_BE BSymLink;
+class _IMPEXP_BE BVolume;
+class _IMPEXP_BE BVolumeRoster;
+
+class _IMPEXP_BE Partition;
+class _IMPEXP_BE Session;
+class _IMPEXP_BE Device;
+class _IMPEXP_BE DeviceList;
+class _IMPEXP_BE TNodeWalker;
+class _IMPEXP_BE TQueryWalker;
+class _IMPEXP_BE TVolWalker;
+
+/*app kit */
+struct _IMPEXP_BE app_info;
+class _IMPEXP_BE BApplication;
+class _IMPEXP_BE BClipboard;
+class _IMPEXP_BE BHandler;
+class _IMPEXP_BE BInvoker;
+class _IMPEXP_BE BLooper;
+class _IMPEXP_BE BMessage;
+class _IMPEXP_BE BMessageFilter;
+class _IMPEXP_BE BMessageQueue;
+class _IMPEXP_BE BMessageRunner;
+class _IMPEXP_BE BMessenger;
+class _IMPEXP_BE BPropertyInfo;
+class _IMPEXP_BE BRoster;
+
+class _IMPEXP_BE _BAppServerLink_;
+class _IMPEXP_BE _BSession_;
+
+/*interface kit */
+class _IMPEXP_BE BAlert;
+class _IMPEXP_BE BBitmap;
+class _IMPEXP_BE BBox;
+class _IMPEXP_BE BButton;
+class _IMPEXP_BE BChannelControl;
+class _IMPEXP_BE BChannelSlider;
+class _IMPEXP_BE BCheckBox;
+class _IMPEXP_BE BColorControl;
+class _IMPEXP_BE BControl;
+class _IMPEXP_BE BDeskbar;
+class _IMPEXP_BE BDragger;
+class _IMPEXP_BE BFont;
+class _IMPEXP_BE BInputDevice;
+class _IMPEXP_BE BListItem;
+class _IMPEXP_BE BListView;
+class _IMPEXP_BE BStringItem;
+class _IMPEXP_BE BMenu;
+class _IMPEXP_BE BMenuBar;
+class _IMPEXP_BE BMenuField;
+class _IMPEXP_BE BMenuItem;
+class _IMPEXP_BE BOptionControl;
+class _IMPEXP_BE BOptionPopUp;
+class _IMPEXP_BE BOutlineListView;
+class _IMPEXP_BE BPicture;
+class _IMPEXP_BE BPictureButton;
+class _IMPEXP_BE BPoint;
+class _IMPEXP_BE BPolygon;
+class _IMPEXP_BE BPopUpMenu;
+class _IMPEXP_BE BPrintJob;
+class _IMPEXP_BE BRadioButton;
+class _IMPEXP_BE BRect;
+class _IMPEXP_BE BRegion;
+class _IMPEXP_BE BScreen;
+class _IMPEXP_BE BScrollBar;
+class _IMPEXP_BE BScrollView;
+class _IMPEXP_BE BSeparatorItem;
+class _IMPEXP_BE BShelf;
+class _IMPEXP_BE BShape;
+class _IMPEXP_BE BShapeIterator;
+class _IMPEXP_BE BSlider;
+class _IMPEXP_BE BStatusBar;
+class _IMPEXP_BE BStringView;
+class _IMPEXP_BE BTab;
+class _IMPEXP_BE BTabView;
+class _IMPEXP_BE BTextControl;
+class _IMPEXP_BE BTextView;
+class _IMPEXP_BE BView;
+class _IMPEXP_BE BWindow;
+
+class _IMPEXP_BE _BTextInput_;
+class _IMPEXP_BE _BMCMenuBar_;
+class _IMPEXP_BE _BMCItem_;
+class _IMPEXP_BE _BWidthBuffer_;
+class _IMPEXP_BE BPrivateScreen;
+
+/* net kit */
+class _IMPEXP_NET _Allocator;
+class _IMPEXP_NET _Transacter;
+class _IMPEXP_NET _FastIPC;
+
+/* netdev kit */
+class _IMPEXP_NETDEV BNetPacket;
+class _IMPEXP_NETDEV BStandardPacket;
+class _IMPEXP_NETDEV BTimeoutHandler;
+class _IMPEXP_NETDEV BPacketHandler;
+class _IMPEXP_NETDEV BNetProtocol;
+class _IMPEXP_NETDEV BNetDevice;
+class _IMPEXP_NETDEV BCallBackHandler;
+class _IMPEXP_NETDEV BNetConfig;
+class _IMPEXP_NETDEV BIpDevice;
+
+class _IMPEXP_NETDEV _NetBufList;
+class _IMPEXP_NETDEV _BSem;
+
+/* atalk kit */
+class _IMPEXP_ATALK _PrinterNode;
+
+/* tracker kit */
+class _IMPEXP_TRACKER BFilePanel;
+class _IMPEXP_TRACKER BRecentItemsList;
+class _IMPEXP_TRACKER BRecentFilesList;
+class _IMPEXP_TRACKER BRecentFoldersList;
+class _IMPEXP_TRACKER BRecentAppsList;
+
+/* mail kit */
+class _IMPEXP_MAIL BMailMessage;
+
+/* device kit */
+class _IMPEXP_DEVICE BA2D;
+class _IMPEXP_DEVICE BD2A;
+class _IMPEXP_DEVICE BDigitalPort;
+class _IMPEXP_DEVICE BJoystick;
+class _IMPEXP_DEVICE BSerialPort;
+
+/* media kit */
+class _IMPEXP_MEDIA BDACRenderer;
+class _IMPEXP_MEDIA BAudioFileStream;
+class _IMPEXP_MEDIA BADCStream;
+class _IMPEXP_MEDIA BDACStream;
+class _IMPEXP_MEDIA BAbstractBufferStream;
+class _IMPEXP_MEDIA BBufferStreamManager;
+class _IMPEXP_MEDIA BBufferStream;
+class _IMPEXP_MEDIA BSoundFile;
+class _IMPEXP_MEDIA BSubscriber;
+
+class _IMPEXP_MEDIA BMediaRoster;
+class _IMPEXP_MEDIA BMediaNode;
+class _IMPEXP_MEDIA BTimeSource;
+class _IMPEXP_MEDIA BBufferProducer;
+class _IMPEXP_MEDIA BBufferConsumer;
+class _IMPEXP_MEDIA BBuffer;
+class _IMPEXP_MEDIA BBufferGroup;
+class _IMPEXP_MEDIA BControllable;
+class _IMPEXP_MEDIA BFileInterface;
+class _IMPEXP_MEDIA BEntityInterface;
+class _IMPEXP_MEDIA BMediaAddOn;
+class _IMPEXP_MEDIA BMediaTheme;
+class _IMPEXP_MEDIA BParameterWeb;
+class _IMPEXP_MEDIA BParameterGroup;
+class _IMPEXP_MEDIA BParameter;
+class _IMPEXP_MEDIA BNullParameter;
+class _IMPEXP_MEDIA BDiscreteParameter;
+class _IMPEXP_MEDIA BContinuousParameter;
+class _IMPEXP_MEDIA BMediaFiles;
+class _IMPEXP_MEDIA BSound;
+class _IMPEXP_MEDIA BSoundCard;
+class _IMPEXP_MEDIA BSoundPlayer;
+class _IMPEXP_MEDIA BMediaFormats;
+class _IMPEXP_MEDIA BTimedEventQueue;
+//class _IMPEXP_MEDIA BEventIterator;
+class _IMPEXP_MEDIA BMediaEventLooper;
+class _IMPEXP_MEDIA BMediaFile;
+class _IMPEXP_MEDIA BMediaTrack;
+
+class _IMPEXP_MEDIA media_node;
+struct _IMPEXP_MEDIA media_input;
+struct _IMPEXP_MEDIA media_output;
+struct _IMPEXP_MEDIA live_node_info;
+struct _IMPEXP_MEDIA buffer_clone_info;
+struct _IMPEXP_MEDIA media_source;
+struct _IMPEXP_MEDIA media_destination;
+struct _IMPEXP_MEDIA media_raw_audio_format;
+struct _IMPEXP_MEDIA media_raw_video_format;
+struct _IMPEXP_MEDIA media_video_display_info;
+struct _IMPEXP_MEDIA flavor_info;
+struct _IMPEXP_MEDIA dormant_node_info;
+struct _IMPEXP_MEDIA dormant_flavor_info;
+struct _IMPEXP_MEDIA media_source;
+struct _IMPEXP_MEDIA media_destination;
+struct _IMPEXP_MEDIA _media_format_description;
+struct _IMPEXP_MEDIA media_timed_event;
+
+/* midi kit */
+class _IMPEXP_MIDI BMidi;
+class _IMPEXP_MIDI BMidiPort;
+class _IMPEXP_MIDI BMidiStore;
+class _IMPEXP_MIDI BMidiSynth;
+class _IMPEXP_MIDI BMidiSynthFile;
+class _IMPEXP_MIDI BMidiText;
+class _IMPEXP_MIDI BSamples;
+class _IMPEXP_MIDI BSynth;
+
+class _IMPEXP_MIDI2 BMidiEndpoint;
+class _IMPEXP_MIDI2 BMidiProducer;
+class _IMPEXP_MIDI2 BMidiConsumer;
+class _IMPEXP_MIDI2 BMidiLocalProducer;
+class _IMPEXP_MIDI2 BMidiLocalConsumer;
+class _IMPEXP_MIDI2 BMidiRoster;
+
+/* game kit */
+class _IMPEXP_GAME BWindowScreen;
+class _IMPEXP_GAME BDirectWindow;
+
+/* gamesound kit */
+class _IMPEXP_GSOUND BGameSound;
+class _IMPEXP_GSOUND BSimpleGameSound;
+class _IMPEXP_GSOUND BStreamingGameSound;
+class _IMPEXP_GSOUND BFileGameSound;
+class _IMPEXP_GSOUND BPushGameSound;
+
+/* translation kit */
+class _IMPEXP_TRANSLATION BTranslatorRoster;
+class _IMPEXP_TRANSLATION BTranslationUtils;
+class _IMPEXP_TRANSLATION BBitmapStream;
+class _IMPEXP_TRANSLATION BTranslator;
+struct _IMPEXP_TRANSLATION translation_format;
+struct _IMPEXP_TRANSLATION translator_info;
+
+/* GL */
+class _IMPEXP_GL BGLView;
+class _IMPEXP_GL BGLScreen;
+#ifdef __cplusplus
+class _IMPEXP_GL GLUnurbs;
+class _IMPEXP_GL GLUquadric;
+class _IMPEXP_GL GLUtesselator;
+
+typedef class _IMPEXP_GL GLUnurbs GLUnurbsObj;
+typedef class _IMPEXP_GL GLUquadric GLUquadricObj;
+typedef class _IMPEXP_GL GLUtesselator GLUtesselatorObj;
+typedef class _IMPEXP_GL GLUtesselator GLUtriangulatorObj;
+
+#else
+typedef struct _IMPEXP_GL GLUnurbs GLUnurbs;
+typedef struct _IMPEXP_GL GLUquadric GLUquadric;
+typedef struct _IMPEXP_GL GLUtesselator GLUtesselator;
+
+typedef struct _IMPEXP_GL GLUnurbs GLUnurbsObj;
+typedef struct _IMPEXP_GL GLUquadric GLUquadricObj;
+typedef struct _IMPEXP_GL GLUtesselator GLUtesselatorObj;
+typedef struct _IMPEXP_GL GLUtesselator GLUtriangulatorObj;
+#endif
+
+/* input_server */
+class _IMPEXP_INPUT BInputServerDevice;
+class _IMPEXP_INPUT BInputServerFilter;
+class _IMPEXP_INPUT BInputServerMethod;
+
+#endif /* __cplusplus */
+
+#endif
diff --git a/headers/os/add-ons/file_system/fsproto.h b/headers/os/add-ons/file_system/fsproto.h
new file mode 100644
index 0000000000..465371f1b3
--- /dev/null
+++ b/headers/os/add-ons/file_system/fsproto.h
@@ -0,0 +1,246 @@
+/*
+ Copyright 1999-2001, Be Incorporated. All Rights Reserved.
+ This file may be used under the terms of the Be Sample Code License.
+*/
+
+#ifndef _FSPROTO_H
+#define _FSPROTO_H
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+#include
+#include
+#include
+
+typedef dev_t nspace_id;
+typedef ino_t vnode_id;
+
+/*
+ * PUBLIC PART OF THE FILE SYSTEM PROTOCOL
+ */
+
+#define WSTAT_MODE 0x0001
+#define WSTAT_UID 0x0002
+#define WSTAT_GID 0x0004
+#define WSTAT_SIZE 0x0008
+#define WSTAT_ATIME 0x0010
+#define WSTAT_MTIME 0x0020
+#define WSTAT_CRTIME 0x0040
+
+#define WFSSTAT_NAME 0x0001
+
+#define B_ENTRY_CREATED 1
+#define B_ENTRY_REMOVED 2
+#define B_ENTRY_MOVED 3
+#define B_STAT_CHANGED 4
+#define B_ATTR_CHANGED 5
+#define B_DEVICE_MOUNTED 6
+#define B_DEVICE_UNMOUNTED 7
+
+#define B_STOP_WATCHING 0x0000
+#define B_WATCH_NAME 0x0001
+#define B_WATCH_STAT 0x0002
+#define B_WATCH_ATTR 0x0004
+#define B_WATCH_DIRECTORY 0x0008
+
+#define SELECT_READ 1
+#define SELECT_WRITE 2
+#define SELECT_EXCEPTION 3
+
+#define B_CUR_FS_API_VERSION 2
+
+struct attr_info;
+struct index_info;
+
+typedef int op_read_vnode(void *ns, vnode_id vnid, char r, void **node);
+typedef int op_write_vnode(void *ns, void *node, char r);
+typedef int op_remove_vnode(void *ns, void *node, char r);
+typedef int op_secure_vnode(void *ns, void *node);
+
+typedef int op_walk(void *ns, void *base, const char *file, char **newpath,
+ vnode_id *vnid);
+
+typedef int op_access(void *ns, void *node, int mode);
+
+typedef int op_create(void *ns, void *dir, const char *name,
+ int omode, int perms, vnode_id *vnid, void **cookie);
+typedef int op_mkdir(void *ns, void *dir, const char *name, int perms);
+typedef int op_symlink(void *ns, void *dir, const char *name,
+ const char *path);
+typedef int op_link(void *ns, void *dir, const char *name, void *node);
+
+typedef int op_rename(void *ns, void *olddir, const char *oldname,
+ void *newdir, const char *newname);
+typedef int op_unlink(void *ns, void *dir, const char *name);
+typedef int op_rmdir(void *ns, void *dir, const char *name);
+
+typedef int op_readlink(void *ns, void *node, char *buf, size_t *bufsize);
+
+typedef int op_opendir(void *ns, void *node, void **cookie);
+typedef int op_closedir(void *ns, void *node, void *cookie);
+typedef int op_rewinddir(void *ns, void *node, void *cookie);
+typedef int op_readdir(void *ns, void *node, void *cookie, long *num,
+ struct dirent *buf, size_t bufsize);
+
+typedef int op_open(void *ns, void *node, int omode, void **cookie);
+typedef int op_close(void *ns, void *node, void *cookie);
+typedef int op_free_cookie(void *ns, void *node, void *cookie);
+typedef int op_read(void *ns, void *node, void *cookie, off_t pos, void *buf,
+ size_t *len);
+typedef int op_write(void *ns, void *node, void *cookie, off_t pos,
+ const void *buf, size_t *len);
+typedef int op_readv(void *ns, void *node, void *cookie, off_t pos, const iovec *vec,
+ size_t count, size_t *len);
+typedef int op_writev(void *ns, void *node, void *cookie, off_t pos, const iovec *vec,
+ size_t count, size_t *len);
+typedef int op_ioctl(void *ns, void *node, void *cookie, int cmd, void *buf,
+ size_t len);
+typedef int op_setflags(void *ns, void *node, void *cookie, int flags);
+
+typedef int op_rstat(void *ns, void *node, struct stat *);
+typedef int op_wstat(void *ns, void *node, struct stat *, long mask);
+typedef int op_fsync(void *ns, void *node);
+
+typedef int op_select(void *ns, void *node, void *cookie, uint8 event,
+ uint32 ref, selectsync *sync);
+typedef int op_deselect(void *ns, void *node, void *cookie, uint8 event,
+ selectsync *sync);
+
+typedef int op_initialize(const char *devname, void *parms, size_t len);
+typedef int op_mount(nspace_id nsid, const char *devname, ulong flags,
+ void *parms, size_t len, void **data, vnode_id *vnid);
+typedef int op_unmount(void *ns);
+typedef int op_sync(void *ns);
+typedef int op_rfsstat(void *ns, struct fs_info *);
+typedef int op_wfsstat(void *ns, struct fs_info *, long mask);
+
+
+typedef int op_open_attrdir(void *ns, void *node, void **cookie);
+typedef int op_close_attrdir(void *ns, void *node, void *cookie);
+typedef int op_rewind_attrdir(void *ns, void *node, void *cookie);
+typedef int op_read_attrdir(void *ns, void *node, void *cookie, long *num,
+ struct dirent *buf, size_t bufsize);
+typedef int op_remove_attr(void *ns, void *node, const char *name);
+typedef int op_rename_attr(void *ns, void *node, const char *oldname,
+ const char *newname);
+typedef int op_stat_attr(void *ns, void *node, const char *name,
+ struct attr_info *buf);
+
+typedef int op_write_attr(void *ns, void *node, const char *name, int type,
+ const void *buf, size_t *len, off_t pos);
+typedef int op_read_attr(void *ns, void *node, const char *name, int type,
+ void *buf, size_t *len, off_t pos);
+
+typedef int op_open_indexdir(void *ns, void **cookie);
+typedef int op_close_indexdir(void *ns, void *cookie);
+typedef int op_rewind_indexdir(void *ns, void *cookie);
+typedef int op_read_indexdir(void *ns, void *cookie, long *num,
+ struct dirent *buf, size_t bufsize);
+typedef int op_create_index(void *ns, const char *name, int type, int flags);
+typedef int op_remove_index(void *ns, const char *name);
+typedef int op_rename_index(void *ns, const char *oldname,
+ const char *newname);
+typedef int op_stat_index(void *ns, const char *name, struct index_info *buf);
+
+typedef int op_open_query(void *ns, const char *query, ulong flags,
+ port_id port, long token, void **cookie);
+typedef int op_close_query(void *ns, void *cookie);
+typedef int op_read_query(void *ns, void *cookie, long *num,
+ struct dirent *buf, size_t bufsize);
+
+typedef struct vnode_ops {
+ op_read_vnode (*read_vnode);
+ op_write_vnode (*write_vnode);
+ op_remove_vnode (*remove_vnode);
+ op_secure_vnode (*secure_vnode);
+ op_walk (*walk);
+ op_access (*access);
+ op_create (*create);
+ op_mkdir (*mkdir);
+ op_symlink (*symlink);
+ op_link (*link);
+ op_rename (*rename);
+ op_unlink (*unlink);
+ op_rmdir (*rmdir);
+ op_readlink (*readlink);
+ op_opendir (*opendir);
+ op_closedir (*closedir);
+ op_free_cookie (*free_dircookie);
+ op_rewinddir (*rewinddir);
+ op_readdir (*readdir);
+ op_open (*open);
+ op_close (*close);
+ op_free_cookie (*free_cookie);
+ op_read (*read);
+ op_write (*write);
+ op_readv (*readv);
+ op_writev (*writev);
+ op_ioctl (*ioctl);
+ op_setflags (*setflags);
+ op_rstat (*rstat);
+ op_wstat (*wstat);
+ op_fsync (*fsync);
+ op_initialize (*initialize);
+ op_mount (*mount);
+ op_unmount (*unmount);
+ op_sync (*sync);
+ op_rfsstat (*rfsstat);
+ op_wfsstat (*wfsstat);
+ op_select (*select);
+ op_deselect (*deselect);
+ op_open_indexdir (*open_indexdir);
+ op_close_indexdir (*close_indexdir);
+ op_free_cookie (*free_indexdircookie);
+ op_rewind_indexdir (*rewind_indexdir);
+ op_read_indexdir (*read_indexdir);
+ op_create_index (*create_index);
+ op_remove_index (*remove_index);
+ op_rename_index (*rename_index);
+ op_stat_index (*stat_index);
+ op_open_attrdir (*open_attrdir);
+ op_close_attrdir (*close_attrdir);
+ op_free_cookie (*free_attrdircookie);
+ op_rewind_attrdir (*rewind_attrdir);
+ op_read_attrdir (*read_attrdir);
+ op_write_attr (*write_attr);
+ op_read_attr (*read_attr);
+ op_remove_attr (*remove_attr);
+ op_rename_attr (*rename_attr);
+ op_stat_attr (*stat_attr);
+ op_open_query (*open_query);
+ op_close_query (*close_query);
+ op_free_cookie (*free_querycookie);
+ op_read_query (*read_query);
+} vnode_ops;
+
+extern _IMPEXP_KERNEL int new_path(const char *path, char **copy);
+extern _IMPEXP_KERNEL void free_path(char *p);
+
+extern _IMPEXP_KERNEL int notify_listener(int op, nspace_id nsid,
+ vnode_id vnida, vnode_id vnidb,
+ vnode_id vnidc, const char *name);
+extern _IMPEXP_KERNEL void notify_select_event(selectsync *sync, uint32 ref);
+extern _IMPEXP_KERNEL int send_notification(port_id port, long token,
+ ulong what, long op, nspace_id nsida,
+ nspace_id nsidb, vnode_id vnida,
+ vnode_id vnidb, vnode_id vnidc,
+ const char *name);
+extern _IMPEXP_KERNEL int get_vnode(nspace_id nsid, vnode_id vnid, void **data);
+extern _IMPEXP_KERNEL int put_vnode(nspace_id nsid, vnode_id vnid);
+extern _IMPEXP_KERNEL int new_vnode(nspace_id nsid, vnode_id vnid, void *data);
+extern _IMPEXP_KERNEL int remove_vnode(nspace_id nsid, vnode_id vnid);
+extern _IMPEXP_KERNEL int unremove_vnode(nspace_id nsid, vnode_id vnid);
+extern _IMPEXP_KERNEL int is_vnode_removed(nspace_id nsid, vnode_id vnid);
+
+
+extern _EXPORT vnode_ops fs_entry;
+extern _EXPORT int32 api_version;
+
+#endif
diff --git a/headers/os/add-ons/input_server/InputServerDevice.h b/headers/os/add-ons/input_server/InputServerDevice.h
new file mode 100644
index 0000000000..fdf9201de1
--- /dev/null
+++ b/headers/os/add-ons/input_server/InputServerDevice.h
@@ -0,0 +1,79 @@
+/******************************************************************************
+/
+/ File: InputServerDevice.h
+/
+/ Description: Add-on class for input_server devices.
+/
+/ Copyright 1998, Be Incorporated, All Rights Reserved.
+/
+******************************************************************************/
+
+#ifndef _INPUTSERVERDEVICE_H
+#define _INPUTSERVERDEVICE_H
+
+#include
+#include
+#include
+
+
+struct input_device_ref {
+ char *name;
+ input_device_type type;
+ void *cookie;
+};
+
+
+enum {
+ // B_KEYBOARD_DEVICE notifications
+ B_KEY_MAP_CHANGED = 1,
+ B_KEY_LOCKS_CHANGED,
+ B_KEY_REPEAT_DELAY_CHANGED,
+ B_KEY_REPEAT_RATE_CHANGED,
+
+ // B_POINTING_DEVICE notifications
+ B_MOUSE_TYPE_CHANGED,
+ B_MOUSE_MAP_CHANGED,
+ B_MOUSE_SPEED_CHANGED,
+ B_CLICK_SPEED_CHANGED,
+ B_MOUSE_ACCELERATION_CHANGED
+};
+
+
+class _BDeviceAddOn_;
+
+
+class BInputServerDevice {
+public:
+ BInputServerDevice();
+ virtual ~BInputServerDevice();
+
+ virtual status_t InitCheck();
+ virtual status_t SystemShuttingDown();
+
+ virtual status_t Start(const char *device, void *cookie);
+ virtual status_t Stop(const char *device, void *cookie);
+ virtual status_t Control(const char *device,
+ void *cookie,
+ uint32 code,
+ BMessage *message);
+
+ status_t RegisterDevices(input_device_ref **devices);
+ status_t UnregisterDevices(input_device_ref **devices);
+
+ status_t EnqueueMessage(BMessage *message);
+
+ status_t StartMonitoringDevice(const char *device);
+ status_t StopMonitoringDevice(const char *device);
+
+private:
+ _BDeviceAddOn_* fOwner;
+
+ virtual void _ReservedInputServerDevice1();
+ virtual void _ReservedInputServerDevice2();
+ virtual void _ReservedInputServerDevice3();
+ virtual void _ReservedInputServerDevice4();
+ uint32 _reserved[4];
+};
+
+
+#endif
diff --git a/headers/os/add-ons/input_server/InputServerFilter.h b/headers/os/add-ons/input_server/InputServerFilter.h
new file mode 100644
index 0000000000..28e37f4133
--- /dev/null
+++ b/headers/os/add-ons/input_server/InputServerFilter.h
@@ -0,0 +1,39 @@
+/******************************************************************************
+/
+/ File: InputServerFilter.h
+/
+/ Description: Add-on class for input_server filters.
+/
+/ Copyright 1998, Be Incorporated, All Rights Reserved.
+/
+*******************************************************************************/
+
+#ifndef _INPUTSERVERFILTER_H
+#define _INPUTSERVERFILTER_H
+
+#include
+#include
+#include
+
+
+class BInputServerFilter {
+public:
+ BInputServerFilter();
+ virtual ~BInputServerFilter();
+
+ virtual status_t InitCheck();
+
+ virtual filter_result Filter(BMessage *message, BList *outList);
+
+ status_t GetScreenRegion(BRegion *region) const;
+
+private:
+ virtual void _ReservedInputServerFilter1();
+ virtual void _ReservedInputServerFilter2();
+ virtual void _ReservedInputServerFilter3();
+ virtual void _ReservedInputServerFilter4();
+ uint32 _reserved[4];
+};
+
+
+#endif
diff --git a/headers/os/add-ons/input_server/InputServerMethod.h b/headers/os/add-ons/input_server/InputServerMethod.h
new file mode 100644
index 0000000000..9678626421
--- /dev/null
+++ b/headers/os/add-ons/input_server/InputServerMethod.h
@@ -0,0 +1,47 @@
+/******************************************************************************
+/
+/ File: InputServerMethod.h
+/
+/ Description: Add-on class for input_server methods.
+/
+/ Copyright 1998, Be Incorporated, All Rights Reserved.
+/
+/******************************************************************************/
+
+#ifndef _INPUTSERVERMETHOD_H
+#define _INPUTSERVERMETHOD_H
+
+#include
+#include
+#include
+
+
+class _BMethodAddOn_;
+
+
+class BInputServerMethod : public BInputServerFilter {
+public:
+ BInputServerMethod(const char *name,
+ const uchar *icon);
+ virtual ~BInputServerMethod();
+
+ virtual status_t MethodActivated(bool active);
+
+ status_t EnqueueMessage(BMessage *message);
+
+ status_t SetName(const char *name);
+ status_t SetIcon(const uchar *icon);
+ status_t SetMenu(const BMenu *menu, const BMessenger target);
+
+private:
+ _BMethodAddOn_* fOwner;
+
+ virtual void _ReservedInputServerMethod1();
+ virtual void _ReservedInputServerMethod2();
+ virtual void _ReservedInputServerMethod3();
+ virtual void _ReservedInputServerMethod4();
+ uint32 _reserved[4];
+};
+
+
+#endif
diff --git a/headers/os/app/AppDefs.h b/headers/os/app/AppDefs.h
new file mode 100644
index 0000000000..a2e04a5534
--- /dev/null
+++ b/headers/os/app/AppDefs.h
@@ -0,0 +1,167 @@
+//------------------------------------------------------------------------------
+// Copyright (c) 2001-2002, OpenBeOS
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+//
+// File Name: AppDefs.h
+// Author: Erik Jaesler (erik@cgsoftware.com)
+// Description: Message codes and the global cursors.
+//------------------------------------------------------------------------------
+
+#ifndef _APP_DEFS_H
+#define _APP_DEFS_H
+
+// Standard Includes -----------------------------------------------------------
+
+// System Includes -------------------------------------------------------------
+#include
+
+// Project Includes ------------------------------------------------------------
+
+// Local Includes --------------------------------------------------------------
+
+// Local Defines ---------------------------------------------------------------
+
+// Globals ---------------------------------------------------------------------
+
+
+// Global Cursors --------------------------------------------------------------
+
+// Old-style cursors
+extern const unsigned char B_HAND_CURSOR[];
+extern const unsigned char B_I_BEAM_CURSOR[];
+
+// New-style cursors
+#ifdef __cplusplus
+class BCursor;
+extern const BCursor *B_CURSOR_SYSTEM_DEFAULT;
+extern const BCursor *B_CURSOR_I_BEAM;
+#endif
+
+// System Message Codes --------------------------------------------------------
+
+enum {
+ B_ABOUT_REQUESTED = '_ABR',
+ B_WINDOW_ACTIVATED = '_ACT',
+ B_APP_ACTIVATED = '_ACT', // Same as B_WINDOW_ACTIVATED
+ B_ARGV_RECEIVED = '_ARG',
+ B_QUIT_REQUESTED = '_QRQ',
+ B_CLOSE_REQUESTED = '_QRQ', // Obsolete; use B_QUIT_REQUESTED
+ B_CANCEL = '_CNC',
+ B_KEY_DOWN = '_KYD',
+ B_KEY_UP = '_KYU',
+ B_UNMAPPED_KEY_DOWN = '_UKD',
+ B_UNMAPPED_KEY_UP = '_UKU',
+ B_MODIFIERS_CHANGED = '_MCH',
+ B_MINIMIZE = '_WMN',
+ B_MOUSE_DOWN = '_MDN',
+ B_MOUSE_MOVED = '_MMV',
+ B_MOUSE_ENTER_EXIT = '_MEX',
+ B_MOUSE_UP = '_MUP',
+ B_MOUSE_WHEEL_CHANGED = '_MWC',
+ B_OPEN_IN_WORKSPACE = '_OWS',
+ B_PRINTER_CHANGED = '_PCH',
+ B_PULSE = '_PUL',
+ B_READY_TO_RUN = '_RTR',
+ B_REFS_RECEIVED = '_RRC',
+ B_RELEASE_OVERLAY_LOCK = '_ROV',
+ B_ACQUIRE_OVERLAY_LOCK = '_AOV',
+ B_SCREEN_CHANGED = '_SCH',
+ B_VALUE_CHANGED = '_VCH',
+ B_VIEW_MOVED = '_VMV',
+ B_VIEW_RESIZED = '_VRS',
+ B_WINDOW_MOVED = '_WMV',
+ B_WINDOW_RESIZED = '_WRS',
+ B_WORKSPACES_CHANGED = '_WCG',
+ B_WORKSPACE_ACTIVATED = '_WAC',
+ B_ZOOM = '_WZM',
+ _APP_MENU_ = '_AMN',
+ _BROWSER_MENUS_ = '_BRM',
+ _MENU_EVENT_ = '_MEV',
+ _PING_ = '_PBL',
+ _QUIT_ = '_QIT',
+ _VOLUME_MOUNTED_ = '_NVL',
+ _VOLUME_UNMOUNTED_ = '_VRM',
+ _MESSAGE_DROPPED_ = '_MDP',
+ _DISPOSE_DRAG_ = '_DPD',
+ _MENUS_DONE_ = '_MND',
+ _SHOW_DRAG_HANDLES_ = '_SDH',
+ _EVENTS_PENDING_ = '_EVP',
+ _UPDATE_ = '_UPD',
+ _UPDATE_IF_NEEDED_ = '_UPN',
+ _PRINTER_INFO_ = '_PIN',
+ _SETUP_PRINTER_ = '_SUP',
+ _SELECT_PRINTER_ = '_PSL'
+ // Media Kit reserves all reserved codes starting in '_TR'
+};
+
+
+// Other Commands --------------------------------------------------------------
+
+enum {
+ B_SET_PROPERTY = 'PSET',
+ B_GET_PROPERTY = 'PGET',
+ B_CREATE_PROPERTY = 'PCRT',
+ B_DELETE_PROPERTY = 'PDEL',
+ B_COUNT_PROPERTIES = 'PCNT',
+ B_EXECUTE_PROPERTY = 'PEXE',
+ B_GET_SUPPORTED_SUITES = 'SUIT',
+ B_UNDO = 'UNDO',
+ B_CUT = 'CCUT',
+ B_COPY = 'COPY',
+ B_PASTE = 'PSTE',
+ B_SELECT_ALL = 'SALL',
+ B_SAVE_REQUESTED = 'SAVE',
+ B_MESSAGE_NOT_UNDERSTOOD = 'MNOT',
+ B_NO_REPLY = 'NONE',
+ B_REPLY = 'RPLY',
+ B_SIMPLE_DATA = 'DATA',
+ B_MIME_DATA = 'MIME',
+ B_ARCHIVED_OBJECT = 'ARCV',
+ B_UPDATE_STATUS_BAR = 'SBUP',
+ B_RESET_STATUS_BAR = 'SBRS',
+ B_NODE_MONITOR = 'NDMN',
+ B_QUERY_UPDATE = 'QUPD',
+ B_ENDORSABLE = 'ENDO',
+ B_COPY_TARGET = 'DDCP',
+ B_MOVE_TARGET = 'DDMV',
+ B_TRASH_TARGET = 'DDRM',
+ B_LINK_TARGET = 'DDLN',
+ B_INPUT_DEVICES_CHANGED = 'IDCH',
+ B_INPUT_METHOD_EVENT = 'IMEV',
+ B_WINDOW_MOVE_TO = 'WDMT',
+ B_WINDOW_MOVE_BY = 'WDMB',
+ B_SILENT_RELAUNCH = 'AREL',
+ B_OBSERVER_NOTICE_CHANGE = 'NTCH',
+ B_CONTROL_INVOKED = 'CIVK',
+ B_CONTROL_MODIFIED = 'CMOD'
+
+ // Media Kit reserves all reserved codes starting in 'TRI'
+};
+//------------------------------------------------------------------------------
+
+#endif // _APP_DEFS_H
+
+/*
+ * $Log $
+ *
+ * $Id $
+ *
+ */
+
diff --git a/headers/os/app/Application.h b/headers/os/app/Application.h
new file mode 100644
index 0000000000..2eca5270a2
--- /dev/null
+++ b/headers/os/app/Application.h
@@ -0,0 +1,223 @@
+//------------------------------------------------------------------------------
+// Copyright (c) 2001-2002, OpenBeOS
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+//
+// File Name: Application.h
+// Author: Erik Jaesler (erik@cgsoftware.com)
+// Description: BApplication class is the center of the application
+// universe. The global be_app and be_app_messenger
+// variables are defined here as well.
+//------------------------------------------------------------------------------
+
+#ifndef _APPLICATION_H
+#define _APPLICATION_H
+
+// Standard Includes -----------------------------------------------------------
+
+// System Includes -------------------------------------------------------------
+#include
+#include // For convenience
+#include
+#include
+#include
+#include
+#include
+
+// Project Includes ------------------------------------------------------------
+
+// Local Includes --------------------------------------------------------------
+
+// Local Defines ---------------------------------------------------------------
+
+// Globals ---------------------------------------------------------------------
+
+class BCursor;
+class BList;
+class BWindow;
+class _BSession_;
+class BResources;
+class BMessageRunner;
+struct _server_heap_;
+struct _drag_data_;
+
+// BApplication class ----------------------------------------------------------
+class BApplication : public BLooper {
+
+public:
+ BApplication(const char* signature);
+ BApplication(const char* signature,
+ status_t* error);
+ virtual ~BApplication();
+
+ // Archiving
+ BApplication(BMessage* data);
+ static BArchivable* Instantiate(BMessage* data);
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+ status_t InitCheck() const;
+
+ // App control and System Message handling
+ virtual thread_id Run();
+ virtual void Quit();
+ virtual bool QuitRequested();
+ virtual void Pulse();
+ virtual void ReadyToRun();
+ virtual void MessageReceived(BMessage* msg);
+ virtual void ArgvReceived(int32 argc, char** argv);
+ virtual void AppActivated(bool active);
+ virtual void RefsReceived(BMessage* a_message);
+ virtual void AboutRequested();
+
+ // Scripting
+ virtual BHandler* ResolveSpecifier(BMessage* msg,
+ int32 index,
+ BMessage* specifier,
+ int32 form,
+ const char* property);
+
+ // Cursor control, window/looper list, and app info
+ void ShowCursor();
+ void HideCursor();
+ void ObscureCursor();
+ bool IsCursorHidden() const;
+ void SetCursor(const void* cursor);
+ void SetCursor(const BCursor* cursor, bool sync = true);
+ int32 CountWindows() const;
+ BWindow* WindowAt(int32 index) const;
+ int32 CountLoopers() const;
+ BLooper* LooperAt(int32 index) const;
+ bool IsLaunching() const;
+ status_t GetAppInfo(app_info* info) const;
+ static BResources* AppResources();
+
+ virtual void DispatchMessage(BMessage* an_event,
+ BHandler* handler);
+ void SetPulseRate(bigtime_t rate);
+
+ // More scripting
+ virtual status_t GetSupportedSuites(BMessage* data);
+
+
+// Private or reserved ---------------------------------------------------------
+ virtual status_t Perform(perform_code d, void* arg);
+
+private:
+
+ typedef BLooper _inherited;
+
+ friend class BWindow;
+ friend class BView;
+ friend class BBitmap;
+ friend class BScrollBar;
+ friend class BPrivateScreen;
+ friend class _BAppServerLink_;
+ friend void _toggle_handles_(bool);
+
+ BApplication(uint32 signature);
+ BApplication(const BApplication&);
+ BApplication& operator=(const BApplication&);
+
+ virtual void _ReservedApplication1();
+ virtual void _ReservedApplication2();
+ virtual void _ReservedApplication3();
+ virtual void _ReservedApplication4();
+ virtual void _ReservedApplication5();
+ virtual void _ReservedApplication6();
+ virtual void _ReservedApplication7();
+ virtual void _ReservedApplication8();
+
+ virtual bool ScriptReceived(BMessage* msg,
+ int32 index,
+ BMessage* specifier,
+ int32 form,
+ const char* property);
+ void run_task();
+ void InitData(const char* signature, status_t* error);
+ void BeginRectTracking(BRect r, bool trackWhole);
+ void EndRectTracking();
+ void get_scs();
+ void setup_server_heaps();
+ void* rw_offs_to_ptr(uint32 offset);
+ void* ro_offs_to_ptr(uint32 offset);
+ void* global_ro_offs_to_ptr(uint32 offset);
+ void connect_to_app_server();
+ void send_drag( BMessage* msg,
+ int32 vs_token,
+ BPoint offset,
+ BRect drag_rect,
+ BHandler* reply_to);
+ void send_drag( BMessage* msg,
+ int32 vs_token,
+ BPoint offset,
+ int32 bitmap_token,
+ drawing_mode dragMode,
+ BHandler* reply_to);
+ void write_drag(_BSession_* session, BMessage* a_message);
+ bool quit_all_windows(bool force);
+ bool window_quit_loop(bool, bool);
+ void do_argv(BMessage* msg);
+#ifndef FIX_FOR_4_6
+ void SetAppCursor();
+#endif
+ uint32 InitialWorkspace();
+ int32 count_windows(bool incl_menus) const;
+ BWindow* window_at(uint32 index, bool incl_menus) const;
+ status_t get_window_list(BList* list, bool incl_menus) const;
+ static int32 async_quit_entry(void*);
+ static BResources* _app_resources;
+ static BLocker _app_resources_lock;
+
+ const char* fAppName;
+ int32 fServerFrom;
+ int32 fServerTo;
+#ifndef FIX_FOR_4_6
+ void* fCursorData;
+#else
+ void* _unused1;
+#endif
+ _server_heap_* fServerHeap;
+ bigtime_t fPulseRate;
+ uint32 fInitialWorkspace;
+ _drag_data_* fDraggedMessage;
+ BMessageRunner* fPulseRunner;
+ status_t fInitError;
+ uint32 _reserved[11];
+
+ bool fReadyToRunCalled;
+};
+//------------------------------------------------------------------------------
+
+
+// Global Objects --------------------------------------------------------------
+
+extern _IMPEXP_BE BApplication* be_app;
+extern _IMPEXP_BE BMessenger be_app_messenger;
+
+//------------------------------------------------------------------------------
+
+#endif // _APPLICATION_H
+
+/*
+ * $Log $
+ *
+ * $Id $
+ *
+ */
+
diff --git a/headers/os/app/Clipboard.h b/headers/os/app/Clipboard.h
new file mode 100644
index 0000000000..35e343db78
--- /dev/null
+++ b/headers/os/app/Clipboard.h
@@ -0,0 +1,82 @@
+/******************************************************************************
+/
+/ File: Clipboard.h
+/
+/ Description: BClipboard class defines clipboard functionality.
+/ The global be_clipboard represents the default clipboard.
+/
+/ Copyright 1995-98, Be Incorporated, All Rights Reserved.
+/
+*******************************************************************************/
+
+#ifndef _CLIPBOARD_H
+#define _CLIPBOARD_H
+
+#include
+#include
+#include
+
+class BMessage;
+
+enum {
+ B_CLIPBOARD_CHANGED = 'CLCH'
+};
+
+/*------------------------------------------------------------------*/
+/*----- BClipboard class --------------------------------------------*/
+
+class BClipboard {
+public:
+ BClipboard(const char *name, bool transient = false);
+virtual ~BClipboard();
+
+ const char *Name() const;
+
+ uint32 LocalCount() const;
+ uint32 SystemCount() const;
+ status_t StartWatching(BMessenger target);
+ status_t StopWatching(BMessenger target);
+
+ bool Lock();
+ void Unlock();
+ bool IsLocked() const;
+
+ status_t Clear();
+ status_t Commit();
+ status_t Revert();
+
+ BMessenger DataSource() const;
+ BMessage *Data() const;
+
+/*----- Private or reserved -----------------------------------------*/
+private:
+ BClipboard(const BClipboard &);
+ BClipboard &operator=(const BClipboard &);
+
+virtual void _ReservedClipboard1();
+virtual void _ReservedClipboard2();
+virtual void _ReservedClipboard3();
+
+ bool AssertLocked() const;
+ status_t DownloadFromSystem(bool force = false);
+ status_t UploadToSystem();
+
+ uint32 fCount;
+ BMessage *fData;
+ BLocker fLock;
+ BMessenger fClipHandler;
+ BMessenger fDataSource;
+ uint32 fSystemCount;
+ char *fName;
+ uint32 _reserved[4];
+};
+
+/*----------------------------------------------------------------*/
+/*----- Global Clipboard -----------------------------------------*/
+
+extern _IMPEXP_BE BClipboard *be_clipboard;
+
+/*-------------------------------------------------------------*/
+/*-------------------------------------------------------------*/
+
+#endif /* _CLIPBOARD_H */
diff --git a/headers/os/app/Cursor.h b/headers/os/app/Cursor.h
new file mode 100644
index 0000000000..54ec6a1933
--- /dev/null
+++ b/headers/os/app/Cursor.h
@@ -0,0 +1,83 @@
+//------------------------------------------------------------------------------
+// Copyright (c) 2001-2002, OpenBeOS
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+//
+// File Name: Cursor.h
+// Author: Frans van Nispen (xlr8@tref.nl)
+// Description: BCursor describes a view-wide or application-wide cursor.
+//------------------------------------------------------------------------------
+
+#ifndef _CURSOR_H
+#define _CURSOR_H
+
+// Standard Includes -----------------------------------------------------------
+
+// System Includes -------------------------------------------------------------
+#include
+#include
+#include
+
+// Project Includes ------------------------------------------------------------
+
+// Local Includes --------------------------------------------------------------
+
+// Local Defines ---------------------------------------------------------------
+
+// Globals ---------------------------------------------------------------------
+
+
+// BCursor class ---------------------------------------------------------------
+class BCursor : BArchivable {
+public:
+ BCursor(const void* cursorData);
+ BCursor(BMessage* data);
+ virtual ~BCursor();
+
+ virtual status_t Archive(BMessage* into, bool deep = true) const;
+ static BArchivable* Instantiate(BMessage* data);
+
+// Private or reserved ---------------------------------------------------------
+ virtual status_t Perform(perform_code d, void* arg);
+
+private:
+
+ virtual void _ReservedCursor1();
+ virtual void _ReservedCursor2();
+ virtual void _ReservedCursor3();
+ virtual void _ReservedCursor4();
+
+ friend class BApplication;
+ friend class BView;
+
+ int32 m_serverToken;
+ int32 m_needToFree;
+ uint32 _reserved[6];
+};
+//------------------------------------------------------------------------------
+
+#endif // _CURSOR_H
+
+/*
+ * $Log $
+ *
+ * $Id $
+ *
+ */
+
diff --git a/headers/os/app/Handler.h b/headers/os/app/Handler.h
new file mode 100644
index 0000000000..9a17a7f9d9
--- /dev/null
+++ b/headers/os/app/Handler.h
@@ -0,0 +1,148 @@
+//------------------------------------------------------------------------------
+// Copyright (c) 2001-2002, OpenBeOS
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+//
+// File Name: Handler.cpp
+// Author: Erik Jaesler (erik@cgsoftware.com)
+// Description: BHandler defines the message-handling protocol.
+// MessageReceived() is its lynchpin.
+//------------------------------------------------------------------------------
+
+#ifndef _HANDLER_H
+#define _HANDLER_H
+
+// Standard Includes -----------------------------------------------------------
+
+// System Includes -------------------------------------------------------------
+#include
+#include
+
+// Project Includes ------------------------------------------------------------
+
+// Local Includes --------------------------------------------------------------
+
+// Local Defines ---------------------------------------------------------------
+
+// Globals ---------------------------------------------------------------------
+
+class BLooper;
+class BMessageFilter;
+class BMessage;
+class BList;
+class _ObserverList;
+
+#define B_OBSERVE_WHAT_CHANGE "be:observe_change_what"
+#define B_OBSERVE_ORIGINAL_WHAT "be:observe_orig_what"
+const uint32 B_OBSERVER_OBSERVE_ALL = 0xffffffff;
+
+// BHandler class --------------------------------------------------------------
+class BHandler : public BArchivable {
+
+public:
+ BHandler(const char* name = NULL);
+ virtual ~BHandler();
+
+ // Archiving
+ BHandler(BMessage* data);
+ static BArchivable* Instantiate(BMessage* data);
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+ // BHandler guts.
+ virtual void MessageReceived(BMessage* message);
+ BLooper* Looper() const;
+ void SetName(const char* name);
+ const char* Name() const;
+ virtual void SetNextHandler(BHandler* handler);
+ BHandler* NextHandler() const;
+
+ // Message filtering
+ virtual void AddFilter(BMessageFilter* filter);
+ virtual bool RemoveFilter(BMessageFilter* filter);
+ virtual void SetFilterList(BList* filters);
+ BList* FilterList();
+
+ bool LockLooper();
+ status_t LockLooperWithTimeout(bigtime_t timeout);
+ void UnlockLooper();
+
+ // Scripting
+ virtual BHandler* ResolveSpecifier(BMessage* msg,
+ int32 index,
+ BMessage* specifier,
+ int32 form,
+ const char* property);
+ virtual status_t GetSupportedSuites(BMessage* data);
+
+ // Observer calls, inter-looper and inter-team
+ status_t StartWatching(BMessenger, uint32 what);
+ status_t StartWatchingAll(BMessenger);
+ status_t StopWatching(BMessenger, uint32 what);
+ status_t StopWatchingAll(BMessenger);
+
+ // Observer calls for observing targets in the same BLooper
+ status_t StartWatching(BHandler* , uint32 what);
+ status_t StartWatchingAll(BHandler* );
+ status_t StopWatching(BHandler* , uint32 what);
+ status_t StopWatchingAll(BHandler* );
+
+
+ // Reserved
+ virtual status_t Perform(perform_code d, void* arg);
+
+ // Notifier calls
+ virtual void SendNotices(uint32 what, const BMessage* = 0);
+ bool IsWatched() const;
+
+//----- Private or reserved -----------------------------------------
+private:
+ typedef BArchivable _inherited;
+ friend inline int32 _get_object_token_(const BHandler* );
+ friend class BLooper;
+ friend class BMessageFilter;
+
+ virtual void _ReservedHandler2();
+ virtual void _ReservedHandler3();
+ virtual void _ReservedHandler4();
+
+ void InitData(const char* name);
+
+ BHandler(const BHandler&);
+ BHandler& operator=(const BHandler&);
+ void SetLooper(BLooper* loop);
+
+ int32 fToken;
+ char* fName;
+ BLooper* fLooper;
+ BHandler* fNextHandler;
+ BList* fFilters;
+ _ObserverList* fObserverList;
+ uint32 _reserved[3];
+};
+//------------------------------------------------------------------------------
+
+#endif // _HANDLER_H
+
+/*
+ * $Log $
+ *
+ * $Id $
+ *
+ */
+
diff --git a/headers/os/app/Invoker.h b/headers/os/app/Invoker.h
new file mode 100644
index 0000000000..96b5cd2604
--- /dev/null
+++ b/headers/os/app/Invoker.h
@@ -0,0 +1,128 @@
+//------------------------------------------------------------------------------
+// Copyright (c) 2001-2002, OpenBeOS
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+//
+// File Name: Invoker.h
+// Author: Frans van Nispen (xlr8@tref.nl)
+// Description: BInvoker class defines a protocol for objects that
+// post messages to a "target".
+//------------------------------------------------------------------------------
+
+#ifndef _INVOKER_H
+#define _INVOKER_H
+
+// Standard Includes -----------------------------------------------------------
+
+// System Includes -------------------------------------------------------------
+#include
+#include
+
+// Project Includes ------------------------------------------------------------
+
+// Local Includes --------------------------------------------------------------
+
+// Local Defines ---------------------------------------------------------------
+
+// Globals ---------------------------------------------------------------------
+
+class BHandler;
+class BLooper;
+class BMessage;
+
+// BInvoker class --------------------------------------------------------------
+class BInvoker {
+public:
+ BInvoker();
+ BInvoker(BMessage *message,
+ const BHandler *handler,
+ const BLooper *looper = NULL);
+ BInvoker(BMessage *message, BMessenger target);
+ virtual ~BInvoker();
+
+ virtual status_t SetMessage(BMessage *message);
+ BMessage *Message() const;
+ uint32 Command() const;
+
+ virtual status_t SetTarget(const BHandler *h, const BLooper *loop = NULL);
+ virtual status_t SetTarget(BMessenger messenger);
+ bool IsTargetLocal() const;
+ BHandler *Target(BLooper **looper = NULL) const;
+ BMessenger Messenger() const;
+
+ virtual status_t SetHandlerForReply(BHandler *handler);
+ BHandler *HandlerForReply() const;
+
+ virtual status_t Invoke(BMessage *msg = NULL);
+
+ // Invoke with BHandler notification. Use this to perform an
+ // Invoke() with some other kind of notification change code.
+ // (A raw invoke should always notify as B_CONTROL_INVOKED.)
+ // Unlike a raw Invoke(), there is no standard message that is
+ // sent. If 'msg' is NULL, then nothing will be sent to this
+ // invoker's target... however, a notification message will
+ // still be sent to any watchers of the invoker's handler.
+ // Note that the BInvoker class does not actually implement
+ // any of this behavior -- it is up to subclasses to override
+ // Invoke() and call Notify() with the appropriate change code.
+ status_t InvokeNotify(BMessage *msg, uint32 kind = B_CONTROL_INVOKED);
+ status_t SetTimeout(bigtime_t timeout);
+ bigtime_t Timeout() const;
+
+protected:
+ // Return the change code for a notification. This is either
+ // B_CONTROL_INVOKED for raw Invoke() calls, or the kind
+ // supplied to InvokeNotify(). In addition, 'notify' will be
+ // set to true if this was an InvokeNotify() call, else false.
+ uint32 InvokeKind(bool* notify = NULL);
+
+ // Start and end an InvokeNotify context around an Invoke() call.
+ // These are only needed for writing custom methods that
+ // emulate the standard InvokeNotify() call.
+ void BeginInvokeNotify(uint32 kind = B_CONTROL_INVOKED);
+ void EndInvokeNotify();
+
+// Private or reserved ---------------------------------------------------------
+private:
+ // to be able to keep binary compatibility
+ virtual void _ReservedInvoker1();
+ virtual void _ReservedInvoker2();
+ virtual void _ReservedInvoker3();
+
+ BInvoker(const BInvoker&);
+ BInvoker &operator=(const BInvoker&);
+
+ BMessage *fMessage;
+ BMessenger fMessenger;
+ BHandler *fReplyTo;
+ bigtime_t fTimeout;
+ uint32 fNotifyKind;
+ uint32 _reserved[2]; // to be able to keep binary compatibility
+};
+//------------------------------------------------------------------------------
+
+#endif // _INVOKER_H
+
+/*
+ * $Log $
+ *
+ * $Id $
+ *
+ */
+
diff --git a/headers/os/app/Looper.h b/headers/os/app/Looper.h
new file mode 100644
index 0000000000..231d39b4fa
--- /dev/null
+++ b/headers/os/app/Looper.h
@@ -0,0 +1,237 @@
+//------------------------------------------------------------------------------
+// Copyright (c) 2001-2002, OpenBeOS
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+//
+// File Name: Looper.h
+// Author(s): Erik Jaesler (erik@cgsoftware.com)
+// DarkWyrm (bpmagic@columbus.rr.com)
+// Description: BLooper class spawns a thread that runs a message loop.
+//------------------------------------------------------------------------------
+
+#ifndef _LOOPER_H
+#define _LOOPER_H
+
+// Standard Includes -----------------------------------------------------------
+
+// System Includes -------------------------------------------------------------
+#include
+#include
+#include
+#include
+
+// Project Includes ------------------------------------------------------------
+
+// Local Includes --------------------------------------------------------------
+
+// Local Defines ---------------------------------------------------------------
+
+// Globals ---------------------------------------------------------------------
+
+class BMessage;
+class BMessageQueue;
+struct _loop_data_;
+
+// Port (Message Queue) Capacity -----------------------------------------------
+#define B_LOOPER_PORT_DEFAULT_CAPACITY 100
+
+
+// BLooper class ---------------------------------------------------------------
+class BLooper : public BHandler {
+public:
+ BLooper(const char* name = NULL,
+ int32 priority = B_NORMAL_PRIORITY,
+ int32 port_capacity = B_LOOPER_PORT_DEFAULT_CAPACITY);
+virtual ~BLooper();
+
+// Archiving
+ BLooper(BMessage* data);
+static BArchivable* Instantiate(BMessage* data);
+virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+// Message transmission
+ status_t PostMessage(uint32 command);
+ status_t PostMessage(BMessage* message);
+ status_t PostMessage(uint32 command,
+ BHandler* handler,
+ BHandler* reply_to = NULL);
+ status_t PostMessage(BMessage* message,
+ BHandler* handler,
+ BHandler* reply_to = NULL);
+
+virtual void DispatchMessage(BMessage* message, BHandler* handler);
+virtual void MessageReceived(BMessage* msg);
+ BMessage* CurrentMessage() const;
+ BMessage* DetachCurrentMessage();
+ BMessageQueue* MessageQueue() const;
+ bool IsMessageWaiting() const;
+
+// Message handlers
+ void AddHandler(BHandler* handler);
+ bool RemoveHandler(BHandler* handler);
+ int32 CountHandlers() const;
+ BHandler* HandlerAt(int32 index) const;
+ int32 IndexOf(BHandler* handler) const;
+
+ BHandler* PreferredHandler() const;
+ void SetPreferredHandler(BHandler* handler);
+
+// Loop control
+virtual thread_id Run();
+virtual void Quit();
+virtual bool QuitRequested();
+ bool Lock();
+ void Unlock();
+ bool IsLocked() const;
+ status_t LockWithTimeout(bigtime_t timeout);
+ thread_id Thread() const;
+ team_id Team() const;
+static BLooper* LooperForThread(thread_id tid);
+
+// Loop debugging
+ thread_id LockingThread() const;
+ int32 CountLocks() const;
+ int32 CountLockRequests() const;
+ sem_id Sem() const;
+
+// Scripting
+virtual BHandler* ResolveSpecifier(BMessage* msg,
+ int32 index,
+ BMessage* specifier,
+ int32 form,
+ const char* property);
+virtual status_t GetSupportedSuites(BMessage* data);
+
+// Message filters (also see BHandler).
+virtual void AddCommonFilter(BMessageFilter* filter);
+virtual bool RemoveCommonFilter(BMessageFilter* filter);
+virtual void SetCommonFilterList(BList* filters);
+ BList* CommonFilterList() const;
+
+// Private or reserved ---------------------------------------------------------
+virtual status_t Perform(perform_code d, void* arg);
+
+protected:
+ // called from overridden task_looper
+ BMessage* MessageFromPort(bigtime_t = B_INFINITE_TIMEOUT);
+
+private:
+ typedef BHandler _inherited;
+ friend class BWindow;
+ friend class BApplication;
+ friend class BMessenger;
+ friend class BView;
+ friend class BHandler;
+ friend port_id _get_looper_port_(const BLooper* );
+ friend status_t _safe_get_server_token_(const BLooper* , int32* );
+ friend team_id _find_cur_team_id_();
+
+virtual void _ReservedLooper1();
+virtual void _ReservedLooper2();
+virtual void _ReservedLooper3();
+virtual void _ReservedLooper4();
+virtual void _ReservedLooper5();
+virtual void _ReservedLooper6();
+
+ BLooper(const BLooper&);
+ BLooper& operator=(const BLooper&);
+
+ BLooper(int32 priority, port_id port, const char* name);
+
+ status_t _PostMessage(BMessage* msg,
+ BHandler* handler,
+ BHandler* reply_to);
+
+static status_t _Lock(BLooper* loop,
+ port_id port,
+ bigtime_t timeout);
+static status_t _LockComplete(BLooper* loop,
+ int32 old,
+ thread_id this_tid,
+ sem_id sem,
+ bigtime_t timeout);
+ void InitData();
+ void InitData(const char* name, int32 prio, int32 capacity);
+ void AddMessage(BMessage* msg);
+ void _AddMessagePriv(BMessage* msg);
+static status_t _task0_(void* arg);
+
+ void* ReadRawFromPort(int32* code,
+ bigtime_t tout = B_INFINITE_TIMEOUT);
+ BMessage* ReadMessageFromPort(bigtime_t tout = B_INFINITE_TIMEOUT);
+virtual BMessage* ConvertToMessage(void* raw, int32 code);
+virtual void task_looper();
+ void do_quit_requested(BMessage* msg);
+ bool AssertLocked() const;
+ BHandler* top_level_filter(BMessage* msg, BHandler* t);
+ BHandler* handler_only_filter(BMessage* msg, BHandler* t);
+ BHandler* apply_filters( BList* list,
+ BMessage* msg,
+ BHandler* target);
+ void check_lock();
+ BHandler* resolve_specifier(BHandler* target, BMessage* msg);
+ void UnlockFully();
+
+static uint32 sLooperID;
+static uint32 sLooperListSize;
+static uint32 sLooperCount;
+static _loop_data_* sLooperList;
+static BLocker sLooperListLock;
+static team_id sTeamID;
+
+static void AddLooper(BLooper* l);
+static bool IsLooperValid(const BLooper* l);
+static void RemoveLooper(BLooper* l);
+static void GetLooperList(BList* list);
+static BLooper* LooperForName(const char* name);
+static BLooper* LooperForPort(port_id port);
+
+ uint32 fLooperID;
+ BMessageQueue* fQueue;
+ BMessage* fLastMessage;
+ port_id fMsgPort;
+ long fAtomicCount;
+ sem_id fLockSem;
+ long fOwnerCount;
+ thread_id fOwner;
+ thread_id fTaskID;
+ uint32 _unused1;
+ int32 fInitPriority;
+ BHandler* fPreferred;
+ BList fHandlers;
+ BList* fCommonFilters;
+ bool fTerminating;
+ bool fRunCalled;
+ thread_id fCachedPid;
+ size_t fCachedStack;
+ void* fMsgBuffer;
+ size_t fMsgBufferSize;
+ uint32 _reserved[6];
+};
+//------------------------------------------------------------------------------
+
+#endif // _LOOPER_H
+
+/*
+ * $Log $
+ *
+ * $Id $
+ *
+ */
+
diff --git a/headers/os/app/MessageFilter.h b/headers/os/app/MessageFilter.h
new file mode 100644
index 0000000000..9fc1965034
--- /dev/null
+++ b/headers/os/app/MessageFilter.h
@@ -0,0 +1,126 @@
+//------------------------------------------------------------------------------
+// Copyright (c) 2001-2002, OpenBeOS
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+//
+// File Name: MessageFilter.h
+// Author: Erik Jaesler (erik@cgsoftware.com)
+// Description: BMessageFilter class creates objects that filter
+// in-coming BMessages.
+//------------------------------------------------------------------------------
+
+#ifndef _MESSAGE_FILTER_H
+#define _MESSAGE_FILTER_H
+
+// Standard Includes -----------------------------------------------------------
+
+// System Includes -------------------------------------------------------------
+#include
+#include
+
+// Project Includes ------------------------------------------------------------
+
+// Local Includes --------------------------------------------------------------
+
+// Local Defines ---------------------------------------------------------------
+
+// Globals ---------------------------------------------------------------------
+
+class BMessage;
+
+// filter_hook Return Codes and Protocol ---------------------------------------
+enum filter_result {
+ B_SKIP_MESSAGE,
+ B_DISPATCH_MESSAGE
+};
+
+typedef filter_result (*filter_hook)
+ (BMessage* message, BHandler** target, BMessageFilter* filter);
+
+
+// BMessageFilter invocation criteria ------------------------------------------
+enum message_delivery {
+ B_ANY_DELIVERY,
+ B_DROPPED_DELIVERY,
+ B_PROGRAMMED_DELIVERY
+};
+
+enum message_source {
+ B_ANY_SOURCE,
+ B_REMOTE_SOURCE,
+ B_LOCAL_SOURCE
+};
+
+// BMessageFilter Class --------------------------------------------------------
+class BMessageFilter {
+
+public:
+ BMessageFilter( uint32 what,
+ filter_hook func = NULL);
+ BMessageFilter( message_delivery delivery,
+ message_source source,
+ filter_hook func = NULL);
+ BMessageFilter( message_delivery delivery,
+ message_source source,
+ uint32 what,
+ filter_hook func = NULL);
+ BMessageFilter(const BMessageFilter& filter);
+ BMessageFilter(const BMessageFilter* filter);
+ virtual ~BMessageFilter();
+
+ BMessageFilter &operator=(const BMessageFilter& from);
+
+ // Hook function; ignored if filter_hook is non-NULL
+ virtual filter_result Filter(BMessage* message, BHandler** target);
+
+ message_delivery MessageDelivery() const;
+ message_source MessageSource() const;
+ uint32 Command() const;
+ bool FiltersAnyCommand() const;
+ BLooper *Looper() const;
+
+// Private or reserved ---------------------------------------------------------
+private:
+ friend class BLooper;
+ friend class BHandler;
+
+ virtual void _ReservedMessageFilter1();
+ virtual void _ReservedMessageFilter2();
+
+ void SetLooper(BLooper* owner);
+ filter_hook FilterFunction() const;
+ bool fFiltersAny;
+ uint32 what;
+ message_delivery fDelivery;
+ message_source fSource;
+ BLooper *fLooper;
+ filter_hook fFilterFunction;
+ uint32 _reserved[3];
+};
+//------------------------------------------------------------------------------
+
+#endif // _MESSAGE_FILTER_H
+
+/*
+ * $Log $
+ *
+ * $Id $
+ *
+ */
+
diff --git a/headers/os/app/MessageQueue.h b/headers/os/app/MessageQueue.h
new file mode 100644
index 0000000000..457f0d1cc5
--- /dev/null
+++ b/headers/os/app/MessageQueue.h
@@ -0,0 +1,67 @@
+//
+// $Id: MessageQueue.h,v 1.1 2002/07/09 12:24:32 ejakowatz Exp $
+//
+// This is the BMessageQueue interface for OpenBeOS. It has been created
+// to be source and binary compatible with the BeOS version of
+// BMessageQueue.
+//
+
+
+#ifndef _OPENBEOS_MESSAGEQUEUE_H
+#define _OPENBEOS_MESSAGEQUEUE_H
+
+
+#include "Locker.h"
+
+
+class BMessage;
+
+
+#ifdef USE_OPENBEOS_NAMESPACE
+namespace OpenBeOS {
+#endif
+
+class BMessageQueue {
+public:
+ BMessageQueue();
+ virtual ~BMessageQueue();
+
+ void AddMessage(BMessage *message);
+ void RemoveMessage(BMessage *message);
+
+ int32 CountMessages(void) const;
+ bool IsEmpty(void) const;
+
+ BMessage *FindMessage(int32 index) const;
+ BMessage *FindMessage(uint32 what, int32 index=0) const;
+
+ bool Lock(void);
+ void Unlock(void);
+ bool IsLocked(void);
+
+ BMessage *NextMessage(void);
+
+private:
+
+ // Reserved space in the vtable for future changes to BMessageQueue
+ virtual void _ReservedMessageQueue1(void);
+ virtual void _ReservedMessageQueue2(void);
+ virtual void _ReservedMessageQueue3(void);
+
+ BMessageQueue(const BMessageQueue &);
+ BMessageQueue &operator=(const BMessageQueue &);
+
+ BMessage *fTheQueue;
+ BMessage *fQueueTail;
+ int32 fMessageCount;
+ BLocker fLocker;
+
+ // Reserved space for future changes to BMessageQueue
+ uint32 fReservedSpace[3];
+};
+
+#ifdef USE_OPENBEOS_NAMESPACE
+}
+#endif
+
+#endif // _OPENBEOS_MESSAGEQUEUE_H
diff --git a/headers/os/app/MessageRunner.h b/headers/os/app/MessageRunner.h
new file mode 100644
index 0000000000..aea2329c97
--- /dev/null
+++ b/headers/os/app/MessageRunner.h
@@ -0,0 +1,62 @@
+/******************************************************************************
+/
+/ File: MessageRunner.h
+/
+/ Description:
+/
+/ Copyright 1998, Be Incorporated, All Rights Reserved.
+/
+*******************************************************************************/
+
+#ifndef _MESSAGE_RUNNER_H
+#define _MESSAGE_RUNNER_H
+
+#include
+#include
+
+/*----------------------------------------------------------------------*/
+/*----- BMessageRunner class --------------------------------------------*/
+
+class BMessageRunner {
+public:
+ BMessageRunner(BMessenger target, const BMessage *msg,
+ bigtime_t interval, int32 count = -1);
+ BMessageRunner(BMessenger target, const BMessage *msg,
+ bigtime_t interval, int32 count, BMessenger reply_to);
+virtual ~BMessageRunner();
+
+ status_t InitCheck() const;
+
+ status_t SetInterval(bigtime_t interval);
+ status_t SetCount(int32 count);
+ status_t GetInfo(bigtime_t *interval, int32 *count) const;
+
+/*----- Private or reserved -----------------------------------------*/
+
+private:
+
+virtual void _ReservedMessageRunner1();
+virtual void _ReservedMessageRunner2();
+virtual void _ReservedMessageRunner3();
+virtual void _ReservedMessageRunner4();
+virtual void _ReservedMessageRunner5();
+virtual void _ReservedMessageRunner6();
+
+ BMessageRunner(const BMessageRunner &);
+ BMessageRunner &operator=(const BMessageRunner &);
+
+ void InitData(BMessenger target, const BMessage *msg,
+ bigtime_t interval, int32 count, BMessenger reply_to);
+ status_t SetParams(bool reset_i, bigtime_t interval,
+ bool reset_c, int32 count);
+
+ int32 fToken;
+ uint32 _reserved[6];
+};
+
+/*-------------------------------------------------------------*/
+/*-------------------------------------------------------------*/
+
+#endif /* _MESSAGE_QUEUE_H */
+
+
diff --git a/headers/os/app/Messenger.h b/headers/os/app/Messenger.h
new file mode 100644
index 0000000000..9deaf165c8
--- /dev/null
+++ b/headers/os/app/Messenger.h
@@ -0,0 +1,116 @@
+//------------------------------------------------------------------------------
+// Copyright (c) 2001-2002, OpenBeOS
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+//
+// File Name: Messenger.h
+// Author: Ingo Weinhold (bonefish@users.sf.net)
+// Description: BMessenger delivers messages to local or remote targets.
+//------------------------------------------------------------------------------
+
+#ifndef _MESSENGER_H
+#define _MESSENGER_H
+
+// Standard Includes -----------------------------------------------------------
+
+// System Includes -------------------------------------------------------------
+#include
+#include
+#include
+#include
+
+// Project Includes ------------------------------------------------------------
+
+// Local Includes --------------------------------------------------------------
+
+// Local Defines ---------------------------------------------------------------
+
+// Globals ---------------------------------------------------------------------
+
+class BHandler;
+class BLooper;
+
+// BMessenger class ------------------------------------------------------------
+class BMessenger {
+public:
+ BMessenger();
+ BMessenger(const char *signature, team_id team = -1,
+ status_t *result = NULL);
+ BMessenger(const BHandler *handler, const BLooper *looper = NULL,
+ status_t *result = NULL);
+ BMessenger(const BMessenger &from);
+ ~BMessenger();
+
+ // Target
+
+ bool IsTargetLocal() const;
+ BHandler *Target(BLooper **looper) const;
+ bool LockTarget() const;
+ status_t LockTargetWithTimeout(bigtime_t timeout) const;
+
+ // Message sending
+
+ status_t SendMessage(uint32 command, BHandler *replyTo = NULL) const;
+ status_t SendMessage(BMessage *message, BHandler *replyTo = NULL,
+ bigtime_t timeout = B_INFINITE_TIMEOUT) const;
+ status_t SendMessage(BMessage *message, BMessenger replyTo,
+ bigtime_t timeout = B_INFINITE_TIMEOUT) const;
+ status_t SendMessage(uint32 command, BMessage *reply) const;
+ status_t SendMessage(BMessage *message, BMessage *reply,
+ bigtime_t deliveryTimeout = B_INFINITE_TIMEOUT,
+ bigtime_t replyTimeout = B_INFINITE_TIMEOUT) const;
+
+ // Operators and misc
+
+ BMessenger &operator=(const BMessenger &from);
+ bool operator==(const BMessenger &other) const;
+
+ bool IsValid() const;
+ team_id Team() const;
+
+ //----- Private or reserved -----------------------------------------
+private:
+ friend class BRoster;
+ friend class _TRoster_;
+ friend class BMessage;
+ friend inline void _set_message_reply_(BMessage *, BMessenger);
+ friend status_t swap_data(type_code, void *, size_t, swap_action);
+ friend bool operator<(const BMessenger &a, const BMessenger &b);
+ friend bool operator!=(const BMessenger &a, const BMessenger &b);
+
+ BMessenger(team_id team, port_id port, int32 token, bool preferred);
+
+ void InitData(const char *signature, team_id team, status_t *result);
+
+private:
+ port_id fPort;
+ int32 fHandlerToken;
+ team_id fTeam;
+ int32 extra0;
+ int32 extra1;
+ bool fPreferredTarget;
+ bool extra2;
+ bool extra3;
+ bool extra4;
+};
+
+_IMPEXP_BE bool operator<(const BMessenger &a, const BMessenger &b);
+_IMPEXP_BE bool operator!=(const BMessenger &a, const BMessenger &b);
+
+#endif // _MESSENGER_H
diff --git a/headers/os/app/PropertyInfo.h b/headers/os/app/PropertyInfo.h
new file mode 100644
index 0000000000..6407783761
--- /dev/null
+++ b/headers/os/app/PropertyInfo.h
@@ -0,0 +1,134 @@
+/*******************************************************************************
+/
+/ File: PropertyInfo.h
+/
+/ Description: Utility class for maintain scripting information
+/
+/ Copyright 1997-98, Be Incorporated, All Rights Reserved
+/
+*******************************************************************************/
+
+#ifndef _PROPERTY_INFO_H
+#define _PROPERTY_INFO_H
+
+#include
+#include
+#include
+#include /* For convenience */
+
+/*----------------------------------------------------------------*/
+/*----- the property_info structure ------------------------------*/
+
+
+struct _oproperty_info_;
+
+struct compound_type {
+ struct field_pair {
+ char *name; // name of entry in message
+ type_code type; // type_code of entry in message
+ };
+ field_pair pairs[5];
+};
+
+struct property_info {
+ char *name;
+ uint32 commands[10];
+ uint32 specifiers[10];
+ char *usage;
+ uint32 extra_data;
+ uint32 types[10];
+ compound_type ctypes[3];
+ uint32 _reserved[10];
+};
+
+enum value_kind {
+ B_COMMAND_KIND = 0,
+ B_TYPE_CODE_KIND = 1
+};
+
+struct value_info {
+ char *name;
+ uint32 value;
+ value_kind kind;
+ char *usage;
+ uint32 extra_data;
+ uint32 _reserved[10];
+};
+
+#define B_PROPERTY_INFO_TYPE 'SCTD'
+
+/*----------------------------------------------------------------*/
+/*----- BPropertyInfo class --------------------------------------*/
+
+class BPropertyInfo : public BFlattenable {
+public:
+ BPropertyInfo(property_info *p = NULL,
+ value_info *ci = NULL,
+ bool free_on_delete = false);
+virtual ~BPropertyInfo();
+
+virtual int32 FindMatch(BMessage *msg,
+ int32 index,
+ BMessage *spec,
+ int32 form,
+ const char *prop,
+ void *data = NULL) const;
+
+virtual bool IsFixedSize() const;
+virtual type_code TypeCode() const;
+virtual ssize_t FlattenedSize() const;
+virtual status_t Flatten(void *buffer, ssize_t size) const;
+virtual bool AllowsTypeCode(type_code code) const;
+virtual status_t Unflatten(type_code c,
+ const void *buf,
+ ssize_t s);
+ const property_info *Properties() const;
+ const value_info *Values() const;
+ int32 CountProperties() const;
+ int32 CountValues() const;
+
+ void PrintToStream() const;
+
+/*----- Private or reserved -----------------------------------------*/
+protected:
+static bool FindCommand(uint32, int32, property_info *);
+static bool FindSpecifier(uint32, property_info *);
+
+private:
+virtual void _ReservedPropertyInfo1();
+virtual void _ReservedPropertyInfo2();
+virtual void _ReservedPropertyInfo3();
+virtual void _ReservedPropertyInfo4();
+
+ BPropertyInfo(const BPropertyInfo &);
+ BPropertyInfo &operator=(const BPropertyInfo &);
+ void FreeMem();
+ void FreeInfoArray(property_info *p, int32);
+ void FreeInfoArray(value_info *p, int32);
+ void FreeInfoArray(_oproperty_info_ *p, int32);
+static property_info *ConvertToNew(const _oproperty_info_ *p);
+static _oproperty_info_ *ConvertFromNew(const property_info *p);
+
+ property_info *fPropInfo;
+ value_info *fValueInfo;
+ int32 fPropCount;
+ bool fInHeap;
+ bool fOldInHeap;
+ uint16 fValueCount;
+ _oproperty_info_ *fOldPropInfo;
+ uint32 _reserved[2]; /* was 4 */
+
+ /* Deprecated */
+private:
+ const property_info *PropertyInfo() const;
+ BPropertyInfo(property_info *p,
+ bool free_on_delete);
+static bool MatchCommand(uint32, int32, property_info *);
+static bool MatchSpecifier(uint32, property_info *);
+
+};
+
+/*-------------------------------------------------------------*/
+/*-------------------------------------------------------------*/
+
+#endif /* _PROPERTY_INFO_H */
diff --git a/headers/os/app/Roster.h b/headers/os/app/Roster.h
new file mode 100644
index 0000000000..c36bb2a549
--- /dev/null
+++ b/headers/os/app/Roster.h
@@ -0,0 +1,227 @@
+/******************************************************************************
+/
+/ File: Roster.h
+/
+/ Description: BRoster class lets you launch apps and keeps
+/ track of apps that are running.
+/ Global be_roster represents the default BRoster.
+/ app_info structure provides info for a running app.
+/
+/ Copyright 1995-98, Be Incorporated, All Rights Reserved.
+/
+******************************************************************************/
+
+#ifndef _ROSTER_H
+#define _ROSTER_H
+
+#include
+#include
+#include
+#include
+
+class BList;
+class BMessage;
+class BNodeInfo;
+
+extern "C" int _init_roster_();
+
+/*-------------------------------------------------------------*/
+/* --------- app_info Struct and Values ------------------------ */
+
+struct app_info {
+ app_info();
+ ~app_info();
+
+ thread_id thread;
+ team_id team;
+ port_id port;
+ uint32 flags;
+ entry_ref ref;
+ char signature[B_MIME_TYPE_LENGTH];
+};
+
+#define B_LAUNCH_MASK (0x3)
+
+#define B_SINGLE_LAUNCH (0x0)
+#define B_MULTIPLE_LAUNCH (0x1)
+#define B_EXCLUSIVE_LAUNCH (0x2)
+
+#define B_BACKGROUND_APP (0x4)
+#define B_ARGV_ONLY (0x8)
+#define _B_APP_INFO_RESERVED1_ (0x10000000)
+
+
+enum {
+ B_REQUEST_LAUNCHED = 0x00000001,
+ B_REQUEST_QUIT = 0x00000002,
+ B_REQUEST_ACTIVATED = 0x00000004
+};
+
+enum {
+ B_SOME_APP_LAUNCHED = 'BRAS',
+ B_SOME_APP_QUIT = 'BRAQ',
+ B_SOME_APP_ACTIVATED = 'BRAW'
+};
+
+/*-------------------------------------------------------------*/
+/* --------- BRoster class----------------------------------- */
+
+class BRoster {
+public:
+ BRoster();
+ ~BRoster();
+
+/* Querying for apps */
+ bool IsRunning(const char *mime_sig) const;
+ bool IsRunning(entry_ref *ref) const;
+ team_id TeamFor(const char *mime_sig) const;
+ team_id TeamFor(entry_ref *ref) const;
+ void GetAppList(BList *team_id_list) const;
+ void GetAppList(const char *sig, BList *team_id_list) const;
+ status_t GetAppInfo(const char *sig, app_info *info) const;
+ status_t GetAppInfo(entry_ref *ref, app_info *info) const;
+ status_t GetRunningAppInfo(team_id team, app_info *info) const;
+ status_t GetActiveAppInfo(app_info *info) const;
+ status_t FindApp(const char *mime_type, entry_ref *app) const;
+ status_t FindApp(entry_ref *ref, entry_ref *app) const;
+
+/* Launching, activating, and broadcasting to apps */
+ status_t Broadcast(BMessage *msg) const;
+ status_t Broadcast(BMessage *msg, BMessenger reply_to) const;
+ status_t StartWatching(BMessenger target,
+ uint32 event_mask = B_REQUEST_LAUNCHED | B_REQUEST_QUIT) const;
+ status_t StopWatching(BMessenger target) const;
+ status_t ActivateApp(team_id team) const;
+ status_t Launch(const char *mime_type, BMessage *initial_msgs = NULL,
+ team_id *app_team = NULL) const;
+ status_t Launch(const char *mime_type, BList *message_list,
+ team_id *app_team = NULL) const;
+ status_t Launch(const char *mime_type, int argc, char **args,
+ team_id *app_team = NULL) const;
+
+ status_t Launch(const entry_ref *ref, const BMessage *initial_message = NULL,
+ team_id *app_team = NULL) const;
+ status_t Launch(const entry_ref *ref, const BList *message_list,
+ team_id *app_team = NULL) const;
+ status_t Launch(const entry_ref *ref, int argc, const char * const *args,
+ team_id *app_team = NULL) const;
+
+/* Recent document and app support */
+ void GetRecentDocuments(BMessage *refList, int32 maxCount,
+ const char *ofType = NULL,
+ const char *openedByAppSig = NULL) const;
+ void GetRecentDocuments(BMessage *refList, int32 maxCount,
+ const char *ofTypeList[], int32 ofTypeListCount,
+ const char *openedByAppSig = NULL) const;
+ void GetRecentFolders(BMessage *refList, int32 maxCount,
+ const char *openedByAppSig = NULL) const;
+ void GetRecentApps(BMessage *refList, int32 maxCount) const;
+
+ void AddToRecentDocuments(const entry_ref *doc,
+ const char *appSig = NULL) const;
+ void AddToRecentFolders(const entry_ref *folder,
+ const char *appSig = NULL) const;
+
+/*----- Private or reserved ------------------------------*/
+private:
+
+friend class BApplication;
+friend class BWindow;
+friend class _BAppCleanup_;
+friend int _init_roster_();
+friend status_t _send_to_roster_(BMessage *, BMessage *, bool);
+friend bool _is_valid_roster_mess_(bool);
+friend status_t BMimeType::StartWatching(BMessenger);
+friend status_t BMimeType::StopWatching(BMessenger);
+friend status_t BClipboard::StartWatching(BMessenger);
+friend status_t BClipboard::StopWatching(BMessenger);
+
+ enum mtarget {
+ MAIN_MESSENGER,
+ MIME_MESSENGER,
+ USE_GIVEN
+ };
+
+ status_t _StartWatching(mtarget t, BMessenger *roster_mess, uint32 what,
+ BMessenger notify, uint32 event_mask) const;
+ status_t _StopWatching(mtarget t, BMessenger *roster_mess, uint32 what,
+ BMessenger notify) const;
+ uint32 AddApplication( const char *mime_sig,
+ entry_ref *ref,
+ uint32 flags,
+ team_id team,
+ thread_id thread,
+ port_id port,
+ bool full_reg) const;
+ void SetSignature(team_id team, const char *mime_sig) const;
+ void SetThread(team_id team, thread_id tid) const;
+ void SetThreadAndTeam(uint32 entry_token,
+ thread_id tid,
+ team_id team) const;
+ void CompleteRegistration(team_id team,
+ thread_id,
+ port_id port) const;
+ bool IsAppPreRegistered( entry_ref *ref,
+ team_id team,
+ app_info *info) const;
+ void RemovePreRegApp(uint32 entry_token) const;
+ void RemoveApp(team_id team) const;
+
+ status_t xLaunchAppPrivate( const char *mime_sig,
+ const entry_ref *ref,
+ BList* msg_list,
+ int cargs,
+ char **args,
+ team_id *app_team) const;
+ bool UpdateActiveApp(team_id team) const;
+ void SetAppFlags(team_id team, uint32 flags) const;
+ void DumpRoster() const;
+ status_t resolve_app(const char *in_type,
+ const entry_ref *ref,
+ entry_ref *app_ref,
+ char *app_sig,
+ uint32 *app_flags,
+ bool *was_document) const;
+ status_t translate_ref(const entry_ref *ref,
+ BMimeType *app_meta,
+ entry_ref *app_ref,
+ BFile *app_file,
+ char *app_sig,
+ bool *was_document) const;
+ status_t translate_type(const char *mime_type,
+ BMimeType *meta,
+ entry_ref *app_ref,
+ BFile *app_file,
+ char *app_sig) const;
+ status_t sniff_file(const entry_ref *file,
+ BNodeInfo *finfo,
+ char *mime_type) const;
+ bool is_wildcard(const char *sig) const;
+ status_t get_unique_supporting_app(const BMessage *apps,
+ char *out_sig) const;
+ status_t get_random_supporting_app(const BMessage *apps,
+ char *out_sig) const;
+ char **build_arg_vector(char **args, int *pargs,
+ const entry_ref *app_ref,
+ const entry_ref *doc_ref) const;
+ status_t send_to_running(team_id tema,
+ const entry_ref *app_ref,
+ int cargs, char **args,
+ const BList *msg_list,
+ const entry_ref *ref) const;
+ void InitMessengers();
+
+ BMessenger fMess;
+ BMessenger fMimeMess;
+ uint32 _fReserved[3];
+};
+
+/*-----------------------------------------------------*/
+/*----- Global be_roster ------------------------------*/
+
+extern _IMPEXP_BE const BRoster *be_roster;
+
+/*-----------------------------------------------------*/
+/*-----------------------------------------------------*/
+
+#endif /* _ROSTER_H */
diff --git a/headers/os/game/DirectWindow.h b/headers/os/game/DirectWindow.h
new file mode 100644
index 0000000000..46b6df514b
--- /dev/null
+++ b/headers/os/game/DirectWindow.h
@@ -0,0 +1,138 @@
+/*****************************************************************************/
+// DirectWindow.h
+//
+// A "client window class for direct screen access."
+//
+//
+// Copyright (c) 2001 OpenBeOS Project
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+/*****************************************************************************/
+
+#ifndef GAME_KIT_DIRECT_WINDOW
+#define GAME_KIT_DIRECT_WINDOW
+
+#include
+#include
+
+class BDirectDriver;
+
+// State of the direct access when called back through DirectConnected.
+enum direct_buffer_state
+{
+ B_DIRECT_MODE_MASK = 15,
+
+ B_DIRECT_START = 0,
+ B_DIRECT_STOP = 1,
+ B_DIRECT_MODIFY = 2,
+
+ B_CLIPPING_MODIFIED = 16,
+ B_BUFFER_RESIZED = 32,
+ B_BUFFER_MOVED = 64,
+ B_BUFFER_RESET = 128
+};
+
+// State of the direct driver and its hooks functions.
+enum direct_driver_state
+{
+ B_DRIVER_CHANGED = 0x0001,
+ B_MODE_CHANGED = 0x0002
+};
+
+// Frame buffer access descriptor.
+typedef struct
+{
+ direct_buffer_state buffer_state;
+ direct_driver_state driver_state;
+ void *bits;
+ void *pci_bits;
+ int32 bytes_per_row;
+ uint32 bits_per_pixel;
+ color_space pixel_format;
+ buffer_layout layout;
+ buffer_orientation orientation;
+ uint32 _reserved[9];
+ uint32 _dd_type_;
+ uint32 _dd_token_;
+ uint32 clip_list_count;
+ clipping_rect window_bounds;
+ clipping_rect clip_bounds;
+ clipping_rect clip_list[1];
+
+} direct_buffer_info;
+
+
+class BDirectWindow : public BWindow
+{
+public:
+ // Construction and destruction.
+ BDirectWindow( BRect frame, const char* pTitle, window_type type,
+ uint32 flags, uint32 workspace = B_CURRENT_WORKSPACE );
+
+ BDirectWindow( BRect frame, const char* pTitle, window_look look,
+ window_feel feel, uint32 flags, uint32 workspace = B_CURRENT_WORKSPACE );
+
+ virtual ~BDirectWindow();
+
+ // Save and restore.
+ static BArchivable* Instantiate( BMessage* pData );
+ virtual status_t Archive( BMessage *data, bool deep = true ) const;
+
+
+ virtual void DirectConnected( direct_buffer_info* pInfo );
+ status_t GetClippingRegion( BRegion* pRegion, BPoint* pOrigin = NULL ) const;
+ status_t SetFullScreen( bool enable );
+ bool IsFullScreen() const;
+
+ static bool SupportsWindowMode( screen_id = B_MAIN_SCREEN_ID );
+
+ // Defined for future extension (fragile base class). Otherwise
+ // identical to BWindow.
+ virtual void Quit();
+ virtual void DispatchMessage( BMessage* pMessage, BHandler* pHandler );
+ virtual void MessageReceived( BMessage* pMessage );
+ virtual void FrameMoved( BPoint new_position );
+ virtual void WorkspacesChanged( uint32 old_workspace, uint32 new_workspace );
+ virtual void WorkspaceActivated( int32 workspace, bool state );
+ virtual void FrameResized( float new_width, float new_height );
+ virtual void Minimize( bool minimize );
+ virtual void Zoom( BPoint rec_position, float rec_width, float rec_height );
+ virtual void ScreenChanged( BRect screen_size, color_space depth );
+ virtual void MenusBeginning();
+ virtual void MenusEnded();
+ virtual void WindowActivated( bool state );
+ virtual void Show();
+ virtual void Hide();
+ virtual status_t GetSupportedSuites( BMessage* pData );
+ virtual status_t Perform( perform_code performCode, void* pArg );
+ virtual BHandler * ResolveSpecifier( BMessage* pMsg, int32 index,
+ BMessage* pSpecifier, int32 form, const char* pProperty );
+
+private:
+ // No copying allowed.
+ BDirectWindow();
+ BDirectWindow( BDirectWindow& );
+ BDirectWindow& operator=( BDirectWindow& );
+
+private:
+ // Fill in all the particulars relating to our implementation,
+ // once we know what they're going to be, here.
+}
+
+#endif // GAME_KIT_DIRECT_WINDOW
\ No newline at end of file
diff --git a/headers/os/game/FileGameSound.h b/headers/os/game/FileGameSound.h
new file mode 100644
index 0000000000..2ade3e2545
--- /dev/null
+++ b/headers/os/game/FileGameSound.h
@@ -0,0 +1,80 @@
+/*****************************************************************************/
+// FileGameSound.h
+//
+// This is "a class that streams data out of a file."
+//
+//
+// Copyright (c) 2001 OpenBeOS Project
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+/*****************************************************************************/
+
+#ifndef GAME_KIT_FILE_GAME_SOUND
+#define GAME_KIT_FILE_GAME_SOUND
+
+#include
+
+class BMediaFile;
+namespace BPrivate
+{
+ class BTrackReader;
+}
+
+class BFileGameSound : public BStreamingGameSound
+{
+public:
+ BFileGameSound( const entry_ref* pFile, bool looping = true,
+ BGameSoundDevice* pDevice = NULL );
+ BFileGameSound( const char* pFilename, bool looping = true,
+ BGameSoundDevice* pDevice = NULL );
+
+ virtual ~BFileGameSound();
+
+ virtual BGameSound* Clone() const;
+
+ virtual status_t StartPlaying();
+ virtual status_t StopPlaying();
+
+ // Use this if you have stopped and want to start again quickly.
+ status_t Preload();
+
+ virtual void FillBuffer( void* pInBuffer, size_t inByteCount );
+
+ virtual status_t Perform( int32 selector, void* pData );
+
+ virtual status_t SetPaused( bool isPaused, bigtime_t rampTime );
+
+ enum
+ {
+ B_NOT_PAUSED,
+ B_PAUSE_IN_PROGRESS,
+ B_PAUSED
+ };
+
+ int32 IsPaused();
+
+private:
+ // Leave these declarations private unless you plan on actually
+ // implementing and using them.
+ BFileGameSound();
+ BFileGameSound( const BFileGameSound& );
+ BFileGameSound& operator=( const BFileGameSound& );
+};
+
+#endif // GAME_KIT_FILE_GAME_SOUND
diff --git a/headers/os/game/GameKit.h b/headers/os/game/GameKit.h
new file mode 100644
index 0000000000..e989526358
--- /dev/null
+++ b/headers/os/game/GameKit.h
@@ -0,0 +1,35 @@
+/*****************************************************************************/
+// GameKit.h
+//
+// Includes headers for all classes that comprise the GameKit.
+//
+//
+// Copyright (c) 2001 OpenBeOS Project
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+/*****************************************************************************/
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
diff --git a/headers/os/game/GameSound.h b/headers/os/game/GameSound.h
new file mode 100644
index 0000000000..e3e7b5af5e
--- /dev/null
+++ b/headers/os/game/GameSound.h
@@ -0,0 +1,98 @@
+/*****************************************************************************/
+// GameSound.h
+//
+// This is an abstract base class for "all sounds being played using the
+// gamesound kit. Use one of the concrete subclasses for actually playing
+// sound."
+//
+//
+// Copyright (c) 2001 OpenBeOS Project
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+/*****************************************************************************/
+
+#ifndef GAME_KIT_GAME_SOUND
+#define GAME_KIT_GAME_SOUND
+
+#include
+#include
+
+struct gs_audio_format;
+class BGameSoundDevice;
+
+
+class BGameSound
+{
+public:
+ BGameSound( BGameSoundDevice* pDevice = NULL );
+ virtual ~BGameSound();
+
+ virtual BGameSound* Clone() const = 0;
+ status_t InitCheck() const;
+
+ BGameSoundDevice* Device() const;
+ gs_id ID() const;
+
+ // Only valid after Init().
+ const gs_audio_format& Format() const;
+
+ virtual status_t StartPlaying();
+ virtual bool IsPlaying();
+ virtual status_t StopPlaying();
+
+ // Ramp duration is in seconds.
+ status_t SetGain( float gain, bigtime_t duration = 0 );
+ status_t SetPan( float pan, bigtime_t duration = 0 );
+ float Gain();
+ float Pan();
+
+ virtual status_t SetAttributes( gs_attribute* pInAttributes,
+ size_t inAttributeCount );
+ virtual status_t GetAttributes( gs_attribute* pOutAttributes,
+ size_t outAttributeCount );
+
+ virtual status_t Perform( int32 selector, void * data );
+
+ void* operator new( size_t size );
+ void* operator new( size_t size, const nothrow_t& ) throw();
+ void operator delete( void* ptr );
+ void operator delete( void* ptr, const nothrow_t& ) throw();
+
+ // These were implemented in BPrivGameSound, presumably
+ // for reasons of privacy. If that's the only reason, then
+ // we can put them here, because you've got the source, my man.
+ // Otherwise, we'll put 'em where they have to be.
+ static status_t SetMemoryPoolSize( size_t in_poolSize );
+ static status_t LockMemoryPool( bool in_lockInCore );
+ static int32 SetMaxSoundCount( int32 in_maxCount );
+
+protected:
+ status_t SetInitError( status_t in_initError );
+ status_t Init( gs_id handle );
+
+ BGameSound( const BGameSound& other );
+ BGameSound& operator=( const BGameSound & other );
+
+private:
+ BGameSound();
+
+ // Our implementation details go here.
+};
+
+#endif // GAME_KIT_GAME_SOUND
\ No newline at end of file
diff --git a/headers/os/game/GameSoundDefs.h b/headers/os/game/GameSoundDefs.h
new file mode 100644
index 0000000000..610b1f5267
--- /dev/null
+++ b/headers/os/game/GameSoundDefs.h
@@ -0,0 +1,103 @@
+/*****************************************************************************/
+// GameSoundDefs.h
+//
+// "Definitions of common types and constants for the gamesound kit."
+//
+//
+// Copyright (c) 2001 OpenBeOS Project
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+/*****************************************************************************/
+
+#ifndef GAME_KIT_GAME_SOUND_DEFS
+#define GAME_KIT_GAME_SOUND_DEFS
+
+#include
+
+#define B_GS_CUR_API_VERSION B_BEOS_VERSION
+#define B_GS_MIN_API_VERSION 0x100
+
+typedef int32 gs_id;
+
+// Invalid sound handle.
+#define B_GS_INVALID_SOUND ((gs_id)-1)
+
+// gs_id for the main mix buffer.
+#define B_GS_MAIN_SOUND ((gs_id)-2)
+
+// FIXME - renumber to real error messages.
+enum
+{
+ B_GS_BAD_HANDLE = -99999,
+ B_GS_NO_SOUNDS,
+ B_GS_NO_HARDWARE,
+ B_GS_ALREADY_COMMITTED,
+ B_GS_READ_ONLY_VALUE
+};
+
+struct gs_audio_format
+{
+ // Same as media_raw_audio_format.
+ enum format
+ {
+ B_GS_U8 = 0x11, // 128 == mid, 1 == bottom, 255 == top.
+ B_GS_S16 = 0x2, // 0 == mid, -32767 == bottom, +32767 == top.
+ B_GS_F = 0x24, // 0 == mid, -1.0 == bottom, 1.0 == top.
+ B_GS_S32 = 0x4 // 0 == mid, 0x80000001 == bottom, 0x7fffffff == top.
+ };
+
+ float frame_rate;
+ uint32 channel_count; // 1 or 2, mostly.
+ uint32 format; // For compressed formats, go to media_encoded_audio_format.
+ uint32 byte_order; // 2 for little endian, 1 for big endian.
+ size_t buffer_size; // Size of each buffer -- NOT GUARANTEED.
+};
+
+
+enum gs_attributes
+{
+ B_GS_NO_ATTRIBUTE = 0, // When there is no attribute.
+ B_GS_MAIN_GAIN = 1, // 0 == 0 dB, -6.0 == -6 dB (gs_id ignored).
+ B_GS_CD_THROUGH_GAIN, // 0 == 0 dB, -12.0 == -12 dB (gs_id ignored).
+ // But which CD?
+ B_GS_GAIN = 128, // 0 == 0 dB, -1.0 == -1 dB, +10.0 == +10 dB.
+ B_GS_PAN, // 0 == middle, -1.0 == left, +1.0 == right.
+ B_GS_SAMPLING_RATE, // 44100.0 == 44.1 kHz.
+ B_GS_LOOPING, // 0 == no.
+ B_GS_FIRST_PRIVATE_ATTRIBUTE = 90000,
+ B_GS_FIRST_USER_ATTRIBUTE = 100000
+};
+
+struct gs_attribute
+{
+ int32 attribute; // Which attribute.
+ bigtime_t duration; // How long of time to ramp over for the change.
+ float value; // Where the value stops changing.
+ uint32 flags; // Whatever flags are for the attribute.
+};
+
+struct gs_attribute_info
+{
+ int32 attribute;
+ float granularity;
+ float minimum;
+ float maximum;
+};
+
+#endif // GAME_KIT_GAME_SOUND_DEFS
diff --git a/headers/os/game/PushGameSound.h b/headers/os/game/PushGameSound.h
new file mode 100644
index 0000000000..ec6229f8d0
--- /dev/null
+++ b/headers/os/game/PushGameSound.h
@@ -0,0 +1,87 @@
+/*****************************************************************************/
+// PushGameSound.h
+//
+// This is "a class for games that want to push data at the system,
+// rather than have a callback get called."
+//
+//
+// Copyright (c) 2001 OpenBeOS Project
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+/*****************************************************************************/
+
+#ifndef GAME_KIT_PUSH_GAME_SOUND
+#define GAME_KIT_PUSH_GAME_SOUND
+
+#include
+
+class BPushGameSound : public BStreamingGameSound
+{
+public:
+ BPushGameSound( size_t inBufferFrameCount,
+ const gs_audio_format* pFormat, size_t inBufferCount = 2,
+ BGameSoundDevice* pDevice = NULL );
+
+ virtual ~BPushGameSound();
+
+ enum lock_status
+ {
+ lock_failed = -1, // not yet time to do more
+ lock_ok = 0, // do more
+ lock_ok_frames_dropped // you may have missed some buffers
+ };
+
+ virtual lock_status LockNextPage( void** ppOut_pagePtr,
+ size_t* pOut_pageSize );
+
+ virtual status_t UnlockPage( void* pIn_pagePtr );
+
+ virtual lock_status LockForCyclic( void** ppOut_basePtr,
+ size_t* pOut_size );
+
+ virtual status_t UnlockCyclic();
+ virtual size_t CurrentPosition();
+
+ virtual BGameSound* Clone() const;
+
+ virtual status_t Perform( int32 selector, void* pData );
+
+protected:
+
+ // Will allocate handle and call Init().
+ virtual status_t SetParameters( size_t inBufferFrameCount,
+ const gs_audio_format* pFormat, size_t inBufferCount );
+
+ virtual status_t SetStreamHook(
+ void (*hook)( void* pInCookie, void* pInBuffer, size_t inByteCount, BStreamingGameSound* pMe ),
+ void* pCookie );
+
+ // Default is to call stream hook, if any.
+ virtual void FillBuffer( void* pInBuffer, size_t inByteCount );
+
+private:
+
+ // Leave these declarations private unless you plan on actually
+ // implementing and using them.
+ BPushGameSound();
+ BPushGameSound( const BPushGameSound& );
+ BPushGameSound& operator=( const BPushGameSound& );
+};
+
+#endif // GAME_KIT_PUSH_GAME_SOUND
\ No newline at end of file
diff --git a/headers/os/game/SimpleGameSound.h b/headers/os/game/SimpleGameSound.h
new file mode 100644
index 0000000000..da051478ac
--- /dev/null
+++ b/headers/os/game/SimpleGameSound.h
@@ -0,0 +1,64 @@
+/*****************************************************************************/
+// SimpleGameSound.h
+//
+// This is "a class for sound effects that are short, and consist of
+// non-changing samples in memory."
+//
+//
+// Copyright (c) 2001 OpenBeOS Project
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+/*****************************************************************************/
+
+#ifndef GAME_KIT_SIMPLE_GAME_SOUND
+#define GAME_KIT_SIMPLE_GAME_SOUND
+
+#include
+
+class BSimpleGameSound : public BGameSound
+{
+public:
+ BSimpleGameSound( const entry_ref* pInFile,
+ BGameSoundDevice* pDevice = NULL );
+ BSimpleGameSound( const char* pInFile,
+ BGameSoundDevice* pDevice = NULL );
+ BSimpleGameSound( const void* pInData,
+ size_t inFrameCount, const gs_audio_format* pFormat,
+ BGameSoundDevice* pDevice = NULL );
+
+ BSimpleGameSound( const BSimpleGameSound& other );
+
+ virtual ~BSimpleGameSound();
+
+ virtual BGameSound* Clone() const;
+
+ virtual status_t Perform( int32 selector, void* pData );
+
+ status_t SetIsLooping( bool looping );
+ bool IsLooping() const;
+
+private:
+
+ // Leave these declarations private unless you plan on actually
+ // implementing and using them.
+ BSimpleGameSound();
+ BSimpleGameSound& operator=( const BSimpleGameSound& );
+};
+
+#endif
\ No newline at end of file
diff --git a/headers/os/game/StreamingGameSound.h b/headers/os/game/StreamingGameSound.h
new file mode 100644
index 0000000000..c29526c324
--- /dev/null
+++ b/headers/os/game/StreamingGameSound.h
@@ -0,0 +1,83 @@
+/*****************************************************************************/
+// StreamingGameSound.h
+//
+// This is "a class for all kinds of streaming (data not known beforehand)
+// game sounds."
+//
+//
+// Copyright (c) 2001 OpenBeOS Project
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+/*****************************************************************************/
+
+#ifndef GAME_KIT_STREAMING_GAME_SOUND
+#define GAME_KIT_STREAMING_GAME_SOUND
+
+#include
+#include
+#include
+
+class BStreamingGameSound : public BGameSound
+{
+public:
+ BStreamingGameSound( size_t inBufferFrameCount,
+ const gs_audio_format* pFormat, size_t inBufferCount = 2,
+ BGameSoundDevice* pDevice = NULL );
+
+ virtual ~BStreamingGameSound();
+
+ virtual BGameSound* Clone() const;
+
+ virtual status_t SetStreamHook(
+ void (*hook)( void* pInCookie, void* pInBuffer, size_t inByteCount, BStreamingGameSound* pMe ),
+ void* pCookie );
+
+ // The default is to call stream hook, if any.
+ virtual void FillBuffer( void * inBuffer, size_t inByteCount );
+
+ virtual status_t SetAttributes( gs_attribute* inAttributes,
+ size_t inAttributeCount );
+
+ virtual status_t Perform( int32 selector, void* pData );
+
+protected:
+ BStreamingGameSound( BGameSoundDevice* pDevice );
+
+ // Will allocate handle and call Init().
+ virtual status_t SetParameters( size_t inBufferFrameCount,
+ const gs_audio_format* pFormat, size_t inBufferCount );
+
+ bool Lock();
+ void Unlock();
+
+private:
+
+ BLocker _m_lock;
+
+ static void stream_callback( void* pCookie, gs_id handle,
+ void* pBuffer, int32 offset, int32 size, size_t bufSize );
+
+ // Leave these declarations private unless you plan on actually
+ // implementing and using them.
+ BStreamingGameSound();
+ BStreamingGameSound( const BStreamingGameSound& );
+ BStreamingGameSound& operator=( const BStreamingGameSound& );
+};
+
+#endif // GAME_KIT_STREAMING_GAME_SOUND
diff --git a/headers/os/game/WindowScreen.h b/headers/os/game/WindowScreen.h
new file mode 100644
index 0000000000..cc6821adbc
--- /dev/null
+++ b/headers/os/game/WindowScreen.h
@@ -0,0 +1,174 @@
+/*****************************************************************************/
+// WindowScreen.h
+//
+// This is a "client window class for direct screen access."
+//
+//
+// Copyright (c) 2001 OpenBeOS Project
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+/*****************************************************************************/
+
+#ifndef GAME_KIT_WINDOW_SCREEN
+#define GAME_KIT_WINDOW_SCREEN
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+
+// Private struct.
+typedef struct
+{
+ area_id memory_area;
+ area_id io_area;
+ char addon_path[64+B_FILE_NAME_LENGTH];
+
+} _direct_screen_info_;
+
+// Private typedef.
+typedef int32 (*_add_on_control_)( uint32,void* );
+
+// Global function, allowing to move the position of the mouse when
+// the GameKit is in control of the screen.
+_IMPEXP_GAME void set_mouse_position( int32 x, int32 y );
+
+//********************* WARNING - WARNING - WARNING ***********************************
+// This is the current version of WindowScreen. The main purpose of this object is to
+// establish a direct connexion between application and graphic driver, to increase
+// efficiency and abilities. The graphic driver architecture will overcome serious
+// changes in the next release, consequently this could only be a preview version of
+// the real WindowScreen API.
+//
+// Question - is what follows below still true?
+// Answer - to be determined.
+//
+// "Nevertheless, compatibility will be insured in future releases FOR MOST OF THE API,
+// through the use of a compatibility library (the new game library having a name
+// different from "libgame.so"), or a compatibility class (the new WindowScreen class
+// using a different name). Part of the API for which compatibility will not be insure
+// after the Preview Release are specifically pointed out in the following declarations."
+//***************************************************************************************
+
+enum
+{
+ B_ENABLE_VIEW_DRAWING = 0x0001,
+ B_ENABLE_DEBUGGER = 0x0002
+};
+
+class BWindowScreen : public BWindow
+{
+public:
+ BWindowScreen( const char* pTitle, uint32 space, status_t* pError,
+ bool debug_enable = false );
+ BWindowScreen( const char *pTitle, uint32 space, uint32 attributes,
+ status_t* pError );
+
+ virtual ~BWindowScreen();
+
+ virtual void Quit();
+ virtual void ScreenConnected( bool active );
+ void Disconnect();
+ virtual void WindowActivated( bool active );
+ virtual void WorkspaceActivated( int32 workspace, bool state );
+ virtual void ScreenChanged( BRect screen_size, color_space depth );
+ virtual void Hide();
+ virtual void Show();
+ void SetColorList( rgb_color* pList, int32 first_index = 0, int32 last_index = 255 );
+ status_t SetSpace( uint32 space );
+ bool CanControlFrameBuffer();
+ status_t SetFrameBuffer( int32 width, int32 height );
+ status_t MoveDisplayArea( int32 x, int32 y );
+
+ // IOBase will not be supported in a future compatibility version of
+ // WindowScreen. Its features should be replaced by other functions
+ // of the new API.
+ void *IOBase();
+
+ rgb_color* ColorList();
+ frame_buffer_info* FrameBufferInfo();
+ graphics_card_hook CardHookAt( int32 index );
+ graphics_card_info* CardInfo();
+
+//******************************* Debugger API Notice ********************************
+// Those three calls, and the debug_enable flag in the constructor, have been added to
+// help debugging a WindowScreen application without a cross-developement platform or
+// the use of serial debug output.
+//
+// To use them, you need to :
+// - enable the debug mode by setting the debug_enable flag of the constructor to "true".
+// - register all threads that could be accessing the screen directly at any time. To do
+// that, call RegisterThread after spawning the new thread and before resuming
+// it (you should never draw from the Window thread itself, neither register it).
+// - launch your application from Terminal. The GameKit will first swicth to another
+// workspace before opening the WindowScreen. If you launch from workspace 0 [Alt-F1],
+// it will choose the workspace 1 [Alt-F2]. For any other workspace, it will choose
+// the previous one (for example, for workspace 3 (Alt-F4), it will choose workspace 2
+// [Alt-F3]).
+//
+// Then :
+// - You can use printf(...) anywhere to display informations that will be logged in the
+// Terminal window. You can go back to the Terminal Window at any time (using the
+// correct Alt-F?? key). Switching workspace will automatically suspend all the thread
+// you registered and save the graphic context. Switching back to the WindowScreen
+// workspace will restore everything and resume your application.
+// - If you need to save and restore more states when your application is suspended and
+// resumed, you can overwrite the ForceSwitchForDebug() method. This function is called
+// with active == true just after suspending your app, and active == false just before
+// resuming it.
+// - You can suspend your application by calling the Debugger() method. This will also
+// switch to the Terminal workspace. Then you can resume by just switchng back to the
+// WindowScreen workspace (using the good Alt-F?? key). It's better not to call Debugger()
+// with the WindowScreen locked.
+//
+// In case of crash :
+// - Use the safety short-cut : All the left modifiers (Ctrl, Shift, Option, Command, Alt
+// or equivalents) of your keyboard and F12. That should send you back to 640x480, and
+// the debugger terminal should be visible (and usable) if any.
+// - Then, you can also switch to your Terminal workspace to check the last printf infos.
+// - After you got (we hope) more information about your (or our :-) bug, quit the debugger
+// window. Then you should be able to change your code and run your application again.
+// In any case, check the Error() function immediately after the WindowScreen constructor.
+// A bad error code will mean that the GameKit is in a inconsistent state, and then you
+// have better to reboot your machine. If you don't want to reboot, you can also try to
+// run your application in a different workspace.
+//
+// It's far from perfect, but we hope it will still help.
+//
+// The Debug API will not be support after the Preview Release (replaced by the debug
+// API in the new WindowScreen class).
+//**************************************************************************************
+
+ void RegisterThread( thread_id id );
+ virtual void SuspensionHook( bool active );
+ void Suspend( char* pLabel );
+
+ virtual status_t Perform( perform_code d, void* pArg );
+
+private:
+ BWindowScreen();
+ BWindowScreen( BWindowScreen& );
+ BWindowScreen& operator=( BWindowScreen& );
+};
+
+#endif // GAME_KIT_WINDOW_SCREEN
\ No newline at end of file
diff --git a/headers/os/interface/Alert.h b/headers/os/interface/Alert.h
new file mode 100644
index 0000000000..13758a6f07
--- /dev/null
+++ b/headers/os/interface/Alert.h
@@ -0,0 +1,155 @@
+//------------------------------------------------------------------------------
+// Copyright (c) 2001-2002, OpenBeOS
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+//
+// File Name: Alert.h
+// Author: Erik Jaesler (erik@cgsoftware.com)
+// Description: BAlert displays a modal alert window.
+//------------------------------------------------------------------------------
+
+#ifndef _ALERT_H
+#define _ALERT_H
+
+// Standard Includes -----------------------------------------------------------
+
+// System Includes -------------------------------------------------------------
+#include
+#include
+
+// Project Includes ------------------------------------------------------------
+
+// Local Includes --------------------------------------------------------------
+
+// Local Defines ---------------------------------------------------------------
+
+// Globals ---------------------------------------------------------------------
+
+class BBitmap;
+class BButton;
+class BInvoker;
+class BTextView;
+
+// enum for flavors of alert ---------------------------------------------------
+enum alert_type {
+ B_EMPTY_ALERT = 0,
+ B_INFO_ALERT,
+ B_IDEA_ALERT,
+ B_WARNING_ALERT,
+ B_STOP_ALERT
+};
+
+
+enum button_spacing {
+ B_EVEN_SPACING = 0,
+ B_OFFSET_SPACING
+};
+
+// BAlert class ----------------------------------------------------------------
+class BAlert : public BWindow
+{
+public:
+
+ BAlert( const char *title,
+ const char *text,
+ const char *button1,
+ const char *button2 = NULL,
+ const char *button3 = NULL,
+ button_width width = B_WIDTH_AS_USUAL,
+ alert_type type = B_INFO_ALERT);
+ BAlert( const char *title,
+ const char *text,
+ const char *button1,
+ const char *button2,
+ const char *button3,
+ button_width width,
+ button_spacing spacing,
+ alert_type type = B_INFO_ALERT);
+virtual ~BAlert();
+
+// Archiving
+ BAlert(BMessage *data);
+static BArchivable *Instantiate(BMessage *data);
+virtual status_t Archive(BMessage *data, bool deep = true) const;
+
+// BAlert guts
+ void SetShortcut(int32 button_index, char key);
+ char Shortcut(int32 button_index) const;
+
+ int32 Go();
+ status_t Go(BInvoker *invoker);
+
+virtual void MessageReceived(BMessage *an_event);
+virtual void FrameResized(float new_width, float new_height);
+ BButton *ButtonAt(int32 index) const;
+ BTextView *TextView() const;
+
+virtual BHandler *ResolveSpecifier(BMessage *msg,
+ int32 index,
+ BMessage *specifier,
+ int32 form,
+ const char *property);
+virtual status_t GetSupportedSuites(BMessage *data);
+
+virtual void DispatchMessage(BMessage *msg, BHandler *handler);
+virtual void Quit();
+virtual bool QuitRequested();
+
+static BPoint AlertPosition(float width, float height);
+
+// Private or reserved ---------------------------------------------------------
+virtual status_t Perform(perform_code d, void *arg);
+
+private:
+friend class _BAlertFilter_;
+
+virtual void _ReservedAlert1();
+virtual void _ReservedAlert2();
+virtual void _ReservedAlert3();
+
+ void InitObject(const char *text,
+ const char *button1,
+ const char *button2 = NULL,
+ const char *button3 = NULL,
+ button_width width = B_WIDTH_AS_USUAL,
+ button_spacing spacing = B_EVEN_SPACING,
+ alert_type type = B_INFO_ALERT);
+ BBitmap *InitIcon();
+
+ sem_id fAlertSem;
+ int32 fAlertVal;
+ BButton *fButtons[3];
+ BTextView *fTextView;
+ char fKeys[3];
+ alert_type fMsgType;
+ button_width fButtonWidth;
+ BInvoker *fInvoker;
+ uint32 _reserved[4];
+};
+//------------------------------------------------------------------------------
+
+#endif // _ALERT_H
+
+/*
+ * $Log $
+ *
+ * $Id $
+ *
+ */
+
diff --git a/headers/os/interface/Box.h b/headers/os/interface/Box.h
new file mode 100644
index 0000000000..d8575e39e0
--- /dev/null
+++ b/headers/os/interface/Box.h
@@ -0,0 +1,126 @@
+//------------------------------------------------------------------------------
+// Copyright (c) 2001-2002, OpenBeOS
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+//
+// File Name: Box.h
+// Author: Marc Flerackers (mflerackers@androme.be)
+// Description: BBox objects group views together and draw a border
+// around them.
+//------------------------------------------------------------------------------
+
+#ifndef _BOX_H
+#define _BOX_H
+
+// Standard Includes -----------------------------------------------------------
+
+// System Includes -------------------------------------------------------------
+#include
+#include
+
+// Project Includes ------------------------------------------------------------
+
+// Local Includes --------------------------------------------------------------
+
+// Local Defines ---------------------------------------------------------------
+
+// Globals ---------------------------------------------------------------------
+
+
+// BBox class ------------------------------------------------------------------
+class BBox : public BView {
+
+public:
+ BBox(BRect frame,
+ const char *name = NULL,
+ uint32 resizingMode = B_FOLLOW_LEFT | B_FOLLOW_TOP,
+ uint32 flags = B_WILL_DRAW | B_FRAME_EVENTS |
+ B_NAVIGABLE_JUMP,
+ border_style border = B_FANCY_BORDER);
+virtual ~BBox();
+
+/* Archiving */
+ BBox(BMessage *archive);
+static BArchivable *Instantiate(BMessage *archive);
+virtual status_t Archive(BMessage *archive, bool deep = true) const;
+
+virtual void SetBorder(border_style border);
+ border_style Border() const;
+
+ void SetLabel(const char *string);
+ status_t SetLabel(BView *viewLabel);
+
+ const char *Label() const;
+ BView *LabelView() const;
+
+virtual void Draw(BRect updateRect);
+virtual void AttachedToWindow();
+virtual void DetachedFromWindow();
+virtual void AllAttached();
+virtual void AllDetached();
+virtual void FrameResized(float width, float height);
+virtual void MessageReceived(BMessage *message);
+virtual void MouseDown(BPoint point);
+virtual void MouseUp(BPoint point);
+virtual void WindowActivated(bool active);
+virtual void MouseMoved(BPoint point, uint32 transit,
+ const BMessage *message);
+virtual void FrameMoved(BPoint newLocation);
+
+virtual BHandler *ResolveSpecifier(BMessage *message,
+ int32 index,
+ BMessage *specifier,
+ int32 what,
+ const char *property);
+
+virtual void ResizeToPreferred();
+virtual void GetPreferredSize(float *width, float *height);
+virtual void MakeFocus(bool focused = true);
+virtual status_t GetSupportedSuites(BMessage *message);
+
+virtual status_t Perform(perform_code d, void *arg);
+
+private:
+
+virtual void _ReservedBox1();
+virtual void _ReservedBox2();
+
+ BBox &operator=(const BBox &);
+
+ void InitObject(BMessage *data = NULL);
+ void DrawPlain();
+ void DrawFancy();
+ void ClearAnyLabel();
+
+ char *fLabel;
+ BRect fBounds;
+ border_style fStyle;
+ BView *fLabelView;
+ uint32 _reserved[1];
+};
+//------------------------------------------------------------------------------
+
+#endif // _BOX_H
+
+/*
+ * $Log $
+ *
+ * $Id $
+ *
+ */
diff --git a/headers/os/interface/Button.h b/headers/os/interface/Button.h
new file mode 100644
index 0000000000..90777ca1ed
--- /dev/null
+++ b/headers/os/interface/Button.h
@@ -0,0 +1,119 @@
+//------------------------------------------------------------------------------
+// Copyright (c) 2001-2002, OpenBeOS
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+//
+// File Name: Button.h
+// Author: Marc Flerackers (mflerackers@androme.be)
+// Description: BButton displays and controls a button in a window.
+//------------------------------------------------------------------------------
+
+#ifndef _BUTTON_H
+#define _BUTTON_H
+
+// Standard Includes -----------------------------------------------------------
+
+// System Includes -------------------------------------------------------------
+#include
+#include
+
+// Project Includes ------------------------------------------------------------
+
+// Local Includes --------------------------------------------------------------
+
+// Local Defines ---------------------------------------------------------------
+
+// Globals ---------------------------------------------------------------------
+
+
+// BButton class ---------------------------------------------------------------
+class BButton : public BControl {
+
+public:
+ BButton(BRect frame,
+ const char *name,
+ const char *label,
+ BMessage *message,
+ uint32 resizingMode = B_FOLLOW_LEFT | B_FOLLOW_TOP,
+ uint32 flags = B_WILL_DRAW | B_NAVIGABLE);
+
+virtual ~BButton();
+
+ BButton(BMessage *archive);
+
+static BArchivable *Instantiate(BMessage *archive);
+virtual status_t Archive (BMessage *archive, bool deep = true) const;
+
+virtual void Draw(BRect updateRect);
+virtual void MouseDown(BPoint point);
+virtual void AttachedToWindow();
+virtual void KeyDown(const char *bytes, int32 numBytes);
+virtual void MakeDefault(bool flag);
+virtual void SetLabel(const char *string);
+ bool IsDefault() const;
+
+virtual void MessageReceived(BMessage *message);
+virtual void WindowActivated(bool active);
+virtual void MouseMoved(BPoint point, uint32 transit, const BMessage *message);
+virtual void MouseUp(BPoint point);
+virtual void DetachedFromWindow();
+virtual void SetValue(int32 value);
+virtual void GetPreferredSize (float *width, float *height);
+virtual void ResizeToPreferred();
+virtual status_t Invoke(BMessage *message = NULL);
+virtual void FrameMoved(BPoint newLocation);
+virtual void FrameResized(float width, float height);
+
+virtual void MakeFocus(bool focused = true);
+virtual void AllAttached();
+virtual void AllDetached();
+
+virtual BHandler *ResolveSpecifier(BMessage *message,
+ int32 index,
+ BMessage *specifier,
+ int32 what,
+ const char *property);
+virtual status_t GetSupportedSuites(BMessage *message);
+virtual status_t Perform(perform_code d, void *arg);
+
+private:
+
+virtual void _ReservedButton1();
+virtual void _ReservedButton2();
+virtual void _ReservedButton3();
+
+ BButton &operator=(const BButton &);
+
+ BRect DrawDefault(BRect bounds, bool enabled);
+ status_t Execute ();
+
+ float fCachedWidth;
+ bool fDrawAsDefault;
+ uint32 _reserved[3];
+};
+//------------------------------------------------------------------------------
+
+#endif // _BUTTON_H
+
+/*
+ * $Log $
+ *
+ * $Id $
+ *
+ */
diff --git a/headers/os/interface/CheckBox.h b/headers/os/interface/CheckBox.h
new file mode 100644
index 0000000000..f918dc8987
--- /dev/null
+++ b/headers/os/interface/CheckBox.h
@@ -0,0 +1,111 @@
+//------------------------------------------------------------------------------
+// Copyright (c) 2001-2002, OpenBeOS
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+//
+// File Name: CheckBox.h
+// Author: Marc Flerackers (mflerackers@androme.be)
+// Description: BCheckBox displays an on/off control.
+//------------------------------------------------------------------------------
+
+#ifndef _CHECK_BOX_H
+#define _CHECK_BOX_H
+
+// Standard Includes -----------------------------------------------------------
+
+// System Includes -------------------------------------------------------------
+#include
+#include
+// Project Includes ------------------------------------------------------------
+
+// Local Includes --------------------------------------------------------------
+
+// Local Defines ---------------------------------------------------------------
+
+// Globals ---------------------------------------------------------------------
+
+
+// BCheckBox class -------------------------------------------------------------
+class BCheckBox : public BControl {
+
+public:
+ BCheckBox(BRect frame,
+ const char *name,
+ const char *label,
+ BMessage *message,
+ uint32 resizingMode = B_FOLLOW_LEFT | B_FOLLOW_TOP,
+ uint32 flags = B_WILL_DRAW | B_NAVIGABLE);
+virtual ~BCheckBox();
+
+/* Archiving */
+ BCheckBox(BMessage *archive);
+static BArchivable *Instantiate(BMessage *archive);
+virtual status_t Archive(BMessage *archive, bool deep = true) const;
+
+virtual void Draw(BRect updateRect);
+virtual void AttachedToWindow();
+virtual void MouseDown(BPoint point);
+
+virtual void MessageReceived(BMessage *message);
+virtual void WindowActivated(bool active);
+virtual void KeyDown(const char *bytes, int32 numBytes);
+virtual void MouseUp(BPoint point);
+virtual void MouseMoved(BPoint point, uint32 transit, const BMessage *message);
+virtual void DetachedFromWindow();
+virtual void SetValue(int32 value);
+virtual void GetPreferredSize(float *width, float *height);
+virtual void ResizeToPreferred();
+virtual status_t Invoke(BMessage *message = NULL);
+virtual void FrameMoved(BPoint newLocation);
+virtual void FrameResized(float width, float height);
+
+virtual BHandler *ResolveSpecifier(BMessage *message,
+ int32 index,
+ BMessage *specifier,
+ int32 what,
+ const char *property);
+virtual status_t GetSupportedSuites(BMessage *message);
+
+virtual void MakeFocus(bool focused = true);
+virtual void AllAttached();
+virtual void AllDetached();
+
+virtual status_t Perform(perform_code d, void *arg);
+
+private:
+
+virtual void _ReservedCheckBox1();
+virtual void _ReservedCheckBox2();
+virtual void _ReservedCheckBox3();
+
+ BCheckBox &operator=(const BCheckBox &);
+
+ bool fOutlined;
+ uint32 _reserved[2];
+};
+//------------------------------------------------------------------------------
+
+#endif // _CHECK_BOX_H
+
+/*
+ * $Log $
+ *
+ * $Id $
+ *
+ */
diff --git a/headers/os/interface/Control.h b/headers/os/interface/Control.h
new file mode 100644
index 0000000000..aadb97003e
--- /dev/null
+++ b/headers/os/interface/Control.h
@@ -0,0 +1,140 @@
+//------------------------------------------------------------------------------
+// Copyright (c) 2001-2002, OpenBeOS
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+//
+// File Name: Control.h
+// Author: Marc Flerackers (mflerackers@androme.be)
+// Description: BControl is the base class for user-event handling objects.
+//------------------------------------------------------------------------------
+
+#ifndef _CONTROL_H
+#define _CONTROL_H
+
+// Standard Includes -----------------------------------------------------------
+
+// System Includes -------------------------------------------------------------
+#include
+#include
+#include /* For convenience */
+#include
+
+// Project Includes ------------------------------------------------------------
+
+// Local Includes --------------------------------------------------------------
+
+// Local Defines ---------------------------------------------------------------
+enum {
+ B_CONTROL_OFF = 0,
+ B_CONTROL_ON = 1
+};
+
+// Globals ---------------------------------------------------------------------
+
+
+class BWindow;
+
+// BControl class --------------------------------------------------------------
+class BControl : public BView, public BInvoker {
+
+public:
+ BControl(BRect frame,
+ const char *name,
+ const char *label,
+ BMessage *message,
+ uint32 resizingMode,
+ uint32 flags);
+virtual ~BControl();
+
+ BControl(BMessage *archive);
+static BArchivable *Instantiate(BMessage *archive);
+virtual status_t Archive(BMessage *archive, bool deep = true) const;
+
+virtual void WindowActivated(bool active);
+virtual void AttachedToWindow();
+virtual void MessageReceived(BMessage *message);
+virtual void MakeFocus(bool focused = true);
+virtual void KeyDown(const char *bytes, int32 numBytes);
+virtual void MouseDown(BPoint point);
+virtual void MouseUp(BPoint point);
+virtual void MouseMoved(BPoint point, uint32 transit, const BMessage *message);
+virtual void DetachedFromWindow();
+
+virtual void SetLabel(const char *string);
+ const char *Label() const;
+
+virtual void SetValue(int32 value);
+ int32 Value() const;
+
+virtual void SetEnabled(bool enabled);
+ bool IsEnabled() const;
+
+virtual void GetPreferredSize(float *width, float *height);
+virtual void ResizeToPreferred();
+
+virtual status_t Invoke(BMessage *message = NULL);
+virtual BHandler *ResolveSpecifier(BMessage *message,
+ int32 index,
+ BMessage *specifier,
+ int32 what,
+ const char *property);
+virtual status_t GetSupportedSuites(BMessage *message);
+
+virtual void AllAttached();
+virtual void AllDetached();
+
+virtual status_t Perform(perform_code d, void *arg);
+
+protected:
+
+ bool IsFocusChanging() const;
+ bool IsTracking() const;
+ void SetTracking(bool state);
+
+ void SetValueNoUpdate(int32 value);
+
+private:
+
+virtual void _ReservedControl1();
+virtual void _ReservedControl2();
+virtual void _ReservedControl3();
+virtual void _ReservedControl4();
+
+ BControl &operator=(const BControl &);
+
+ void InitData(BMessage *data = NULL);
+
+ char *fLabel;
+ int32 fValue;
+ bool fEnabled;
+ bool fFocusChanging;
+ bool fTracking;
+ bool fWantsNav;
+ uint32 _reserved[4];
+};
+//------------------------------------------------------------------------------
+
+#endif // _CONTROL_H
+
+/*
+ * $Log $
+ *
+ * $Id $
+ *
+ */
diff --git a/headers/os/interface/GraphicsDefs.h b/headers/os/interface/GraphicsDefs.h
new file mode 100644
index 0000000000..a09db9171b
--- /dev/null
+++ b/headers/os/interface/GraphicsDefs.h
@@ -0,0 +1,311 @@
+//------------------------------------------------------------------------------
+// Copyright (c) 2001-2002, OpenBeOS
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+//
+// File Name: GraphicsDefs.h
+// Author: Frans van Nispen
+// Description: BMessageFilter class creates objects that filter
+// in-coming BMessages.
+//------------------------------------------------------------------------------
+
+#ifndef _GRAPHICS_DEFS_H
+#define _GRAPHICS_DEFS_H
+
+// Standard Includes -----------------------------------------------------------
+
+// System Includes -------------------------------------------------------------
+#include
+#include
+
+// Project Includes ------------------------------------------------------------
+
+// Local Includes --------------------------------------------------------------
+
+// Local Defines ---------------------------------------------------------------
+
+// Globals ---------------------------------------------------------------------
+
+
+//------------------------------------------------------------------------------
+
+typedef struct pattern {
+ uint8 data[8];
+} pattern;
+
+extern _IMPEXP_BE const pattern B_SOLID_HIGH;
+extern _IMPEXP_BE const pattern B_MIXED_COLORS;
+extern _IMPEXP_BE const pattern B_SOLID_LOW;
+
+//------------------------------------------------------------------------------
+
+typedef struct rgb_color {
+ uint8 red;
+ uint8 green;
+ uint8 blue;
+ uint8 alpha;
+} rgb_color;
+
+//------------------------------------------------------------------------------
+
+extern _IMPEXP_BE const rgb_color B_TRANSPARENT_COLOR;
+extern _IMPEXP_BE const uint8 B_TRANSPARENT_MAGIC_CMAP8;
+extern _IMPEXP_BE const uint16 B_TRANSPARENT_MAGIC_RGBA15;
+extern _IMPEXP_BE const uint16 B_TRANSPARENT_MAGIC_RGBA15_BIG;
+extern _IMPEXP_BE const uint32 B_TRANSPARENT_MAGIC_RGBA32;
+extern _IMPEXP_BE const uint32 B_TRANSPARENT_MAGIC_RGBA32_BIG;
+
+extern _IMPEXP_BE const uint8 B_TRANSPARENT_8_BIT;
+extern _IMPEXP_BE const rgb_color B_TRANSPARENT_32_BIT;
+
+//------------------------------------------------------------------------------
+
+typedef struct color_map {
+ int32 id;
+ rgb_color color_list[256];
+ uint8 inversion_map[256];
+ uint8 index_map[32768];
+} color_map;
+
+typedef struct overlay_rect_limits {
+ uint16 horizontal_alignment;
+ uint16 vertical_alignment;
+ uint16 width_alignment;
+ uint16 height_alignment;
+ uint16 min_width;
+ uint16 max_width;
+ uint16 min_height;
+ uint16 max_height;
+ uint32 reserved[8];
+} overlay_rect_limits;
+
+typedef struct overlay_restrictions {
+ overlay_rect_limits source;
+ overlay_rect_limits destination;
+ float min_width_scale;
+ float max_width_scale;
+ float min_height_scale;
+ float max_height_scale;
+ uint32 reserved[8];
+} overlay_restrictions;
+
+//------------------------------------------------------------------------------
+
+struct screen_id { int32 id; };
+
+extern _IMPEXP_BE const struct screen_id B_MAIN_SCREEN_ID;
+
+//------------------------------------------------------------------------------
+
+typedef enum
+{
+ B_NO_COLOR_SPACE = 0x0000, //* byte in memory order, high bit first
+
+ // linear color space (little endian is the default)
+ B_RGB32 = 0x0008, //* B[7:0] G[7:0] R[7:0] -[7:0]
+ B_RGBA32 = 0x2008, // B[7:0] G[7:0] R[7:0] A[7:0]
+ B_RGB24 = 0x0003, // B[7:0] G[7:0] R[7:0]
+ B_RGB16 = 0x0005, // G[2:0],B[4:0] R[4:0],G[5:3]
+ B_RGB15 = 0x0010, // G[2:0],B[4:0] -[0],R[4:0],G[4:3]
+ B_RGBA15 = 0x2010, // G[2:0],B[4:0] A[0],R[4:0],G[4:3]
+ B_CMAP8 = 0x0004, // D[7:0]
+ B_GRAY8 = 0x0002, // Y[7:0]
+ B_GRAY1 = 0x0001, // Y0[0],Y1[0],Y2[0],Y3[0],Y4[0],Y5[0],Y6[0],Y7[0]
+
+ // big endian version, when the encoding is not endianess independant
+ B_RGB32_BIG = 0x1008, // -[7:0] R[7:0] G[7:0] B[7:0]
+ B_RGBA32_BIG = 0x3008, // A[7:0] R[7:0] G[7:0] B[7:0]
+ B_RGB24_BIG = 0x1003, // R[7:0] G[7:0] B[7:0]
+ B_RGB16_BIG = 0x1005, // R[4:0],G[5:3] G[2:0],B[4:0]
+ B_RGB15_BIG = 0x1010, // -[0],R[4:0],G[4:3] G[2:0],B[4:0]
+ B_RGBA15_BIG = 0x3010, // A[0],R[4:0],G[4:3] G[2:0],B[4:0]
+
+ // little-endian declarations, for completness
+ B_RGB32_LITTLE = B_RGB32,
+ B_RGBA32_LITTLE = B_RGBA32,
+ B_RGB24_LITTLE = B_RGB24,
+ B_RGB16_LITTLE = B_RGB16,
+ B_RGB15_LITTLE = B_RGB15,
+ B_RGBA15_LITTLE = B_RGBA15,
+
+ // non linear color space -- note that these are here for exchange purposes;
+ // a BBitmap or BView may not necessarily support all these color spaces.
+
+ // Loss/Saturation points are Y 16-235 (absoulte); Cb/Cr 16-240 (center 128)
+
+ B_YCbCr422 = 0x4000, // Y0[7:0] Cb0[7:0] Y1[7:0] Cr0[7:0] Y2[7:0]...
+ // Cb2[7:0] Y3[7:0] Cr2[7:0]
+ B_YCbCr411 = 0x4001, // Cb0[7:0] Y0[7:0] Cr0[7:0] Y1[7:0] Cb4[7:0]...
+ // Y2[7:0] Cr4[7:0] Y3[7:0] Y4[7:0] Y5[7:0]...
+ // Y6[7:0] Y7[7:0]
+ B_YCbCr444 = 0x4003, // Y0[7:0] Cb0[7:0] Cr0[7:0]
+ B_YCbCr420 = 0x4004, // Non-interlaced only, Cb0 Y0 Y1 Cb2 Y2 Y3
+ // on even scan lines, Cr0 Y0 Y1 Cr2 Y2 Y3
+ // on odd scan lines
+
+ // Extrema points are
+ // Y 0 - 207 (absolute)
+ // U -91 - 91 (offset 128)
+ // V -127 - 127 (offset 128)
+ // note that YUV byte order is different from YCbCr
+ // USE YCbCr, not YUV, when that's what you mean!
+ B_YUV422 = 0x4020, // U0[7:0] Y0[7:0] V0[7:0] Y1[7:0] ...
+ // U2[7:0] Y2[7:0] V2[7:0] Y3[7:0]
+ B_YUV411 = 0x4021, // U0[7:0] Y0[7:0] Y1[7:0] V0[7:0] Y2[7:0] Y3[7:0]
+ // U4[7:0] Y4[7:0] Y5[7:0] V4[7:0] Y6[7:0] Y7[7:0]
+ B_YUV444 = 0x4023, // U0[7:0] Y0[7:0] V0[7:0] U1[7:0] Y1[7:0] V1[7:0]
+ B_YUV420 = 0x4024, // Non-interlaced only, U0 Y0 Y1 U2 Y2 Y3
+ // on even scan lines, V0 Y0 Y1 V2 Y2 Y3
+ // on odd scan lines
+ B_YUV9 = 0x402C, // planar? 410?
+ B_YUV12 = 0x402D, // planar? 420?
+
+ B_UVL24 = 0x4030, // U0[7:0] V0[7:0] L0[7:0] ...
+ B_UVL32 = 0x4031, // U0[7:0] V0[7:0] L0[7:0] X0[7:0]...
+ B_UVLA32 = 0x6031, // U0[7:0] V0[7:0] L0[7:0] A0[7:0]...
+
+ B_LAB24 = 0x4032, // L0[7:0] a0[7:0] b0[7:0] ... (a is not alpha!)
+ B_LAB32 = 0x4033, // L0[7:0] a0[7:0] b0[7:0] X0[7:0] ... (b is not alpha!)
+ B_LABA32 = 0x6033, // L0[7:0] a0[7:0] b0[7:0] A0[7:0] ... (A is alpha)
+
+ // red is at hue = 0
+
+ B_HSI24 = 0x4040, // H[7:0] S[7:0] I[7:0]
+ B_HSI32 = 0x4041, // H[7:0] S[7:0] I[7:0] X[7:0]
+ B_HSIA32 = 0x6041, // H[7:0] S[7:0] I[7:0] A[7:0]
+
+ B_HSV24 = 0x4042, // H[7:0] S[7:0] V[7:0]
+ B_HSV32 = 0x4043, // H[7:0] S[7:0] V[7:0] X[7:0]
+ B_HSVA32 = 0x6043, // H[7:0] S[7:0] V[7:0] A[7:0]
+
+ B_HLS24 = 0x4044, // H[7:0] L[7:0] S[7:0]
+ B_HLS32 = 0x4045, // H[7:0] L[7:0] S[7:0] X[7:0]
+ B_HLSA32 = 0x6045, // H[7:0] L[7:0] S[7:0] A[7:0]
+
+ B_CMY24 = 0xC001, // C[7:0] M[7:0] Y[7:0] No gray removal done
+ B_CMY32 = 0xC002, // C[7:0] M[7:0] Y[7:0] X[7:0] No gray removal done
+ B_CMYA32 = 0xE002, // C[7:0] M[7:0] Y[7:0] A[7:0] No gray removal done
+ B_CMYK32 = 0xC003, // C[7:0] M[7:0] Y[7:0] K[7:0]
+
+ // compatibility declarations
+ B_MONOCHROME_1_BIT = B_GRAY1,
+ B_GRAYSCALE_8_BIT = B_GRAY8,
+ B_COLOR_8_BIT = B_CMAP8,
+ B_RGB_32_BIT = B_RGB32,
+ B_RGB_16_BIT = B_RGB15,
+ B_BIG_RGB_32_BIT = B_RGB32_BIG,
+ B_BIG_RGB_16_BIT = B_RGB15_BIG
+} color_space;
+
+
+// Find out whether a specific color space is supported by BBitmaps.
+// Support_flags will be set to what kinds of support are available.
+// If support_flags is set to 0, false will be returned.
+enum {
+ B_VIEWS_SUPPORT_DRAW_BITMAP = 0x1,
+ B_BITMAPS_SUPPORT_ATTACHED_VIEWS = 0x2
+};
+_IMPEXP_BE bool bitmaps_support_space(color_space space, uint32 * support_flags);
+
+//------------------------------------------------------------------------------
+// "pixel_chunk" is the native increment from one pixel starting on an integral byte
+// to the next. "row_alignment" is the native alignment for pixel scanline starts.
+// "pixels_per_chunk" is the number of pixels in a pixel_chunk. For instance, B_GRAY1
+// sets pixel_chunk to 1, row_alignment to 4 and pixels_per_chunk to 8, whereas
+// B_RGB24 sets pixel_chunk to 3, row_alignment to 4 and pixels_per_chunk to 1.
+//------------------------------------------------------------------------------
+_IMPEXP_BE status_t get_pixel_size_for(color_space space, size_t * pixel_chunk,
+ size_t * row_alignment, size_t * pixels_per_chunk);
+
+
+enum buffer_orientation {
+ B_BUFFER_TOP_TO_BOTTOM,
+ B_BUFFER_BOTTOM_TO_TOP
+};
+
+enum buffer_layout {
+ B_BUFFER_NONINTERLEAVED = 1
+};
+
+//------------------------------------------------------------------------------
+
+enum drawing_mode {
+ B_OP_COPY,
+ B_OP_OVER,
+ B_OP_ERASE,
+ B_OP_INVERT,
+ B_OP_ADD,
+ B_OP_SUBTRACT,
+ B_OP_BLEND,
+ B_OP_MIN,
+ B_OP_MAX,
+ B_OP_SELECT,
+ B_OP_ALPHA
+};
+
+enum source_alpha {
+ B_PIXEL_ALPHA=0,
+ B_CONSTANT_ALPHA
+};
+
+enum alpha_function {
+ B_ALPHA_OVERLAY=0,
+ B_ALPHA_COMPOSITE
+};
+
+enum {
+ B_8_BIT_640x480 = 0x00000001,
+ B_8_BIT_800x600 = 0x00000002,
+ B_8_BIT_1024x768 = 0x00000004,
+ B_8_BIT_1280x1024 = 0x00000008,
+ B_8_BIT_1600x1200 = 0x00000010,
+ B_16_BIT_640x480 = 0x00000020,
+ B_16_BIT_800x600 = 0x00000040,
+ B_16_BIT_1024x768 = 0x00000080,
+ B_16_BIT_1280x1024 = 0x00000100,
+ B_16_BIT_1600x1200 = 0x00000200,
+ B_32_BIT_640x480 = 0x00000400,
+ B_32_BIT_800x600 = 0x00000800,
+ B_32_BIT_1024x768 = 0x00001000,
+ B_32_BIT_1280x1024 = 0x00002000,
+ B_32_BIT_1600x1200 = 0x00004000,
+ B_8_BIT_1152x900 = 0x00008000,
+ B_16_BIT_1152x900 = 0x00010000,
+ B_32_BIT_1152x900 = 0x00020000,
+ B_15_BIT_640x480 = 0x00040000,
+ B_15_BIT_800x600 = 0x00080000,
+ B_15_BIT_1024x768 = 0x00100000,
+ B_15_BIT_1280x1024 = 0x00200000,
+ B_15_BIT_1600x1200 = 0x00400000,
+ B_15_BIT_1152x900 = 0x00800000,
+
+ // do not use B_FAKE_DEVICE--it will go away!
+ B_FAKE_DEVICE = 0x40000000,
+ B_8_BIT_640x400 = (int)0x80000000
+};
+
+#endif // _GRAPHICSDEFS_H
+
+/*
+ * $Log $
+ *
+ * $Id $
+ *
+ */
+
diff --git a/headers/os/interface/Input.h b/headers/os/interface/Input.h
new file mode 100644
index 0000000000..263a94d2f0
--- /dev/null
+++ b/headers/os/interface/Input.h
@@ -0,0 +1,88 @@
+/******************************************************************************
+/
+/ File: Input.h
+/
+/ Description: Functions and class to manage input devices.
+/
+/ Copyright 1998, Be Incorporated, All Rights Reserved.
+/
+******************************************************************************/
+
+#ifndef _INPUT_H
+#define _INPUT_H
+
+#include
+#include
+#include
+
+
+enum input_method_op {
+ B_INPUT_METHOD_STARTED = 0,
+ B_INPUT_METHOD_STOPPED = 1,
+ B_INPUT_METHOD_CHANGED = 2,
+ B_INPUT_METHOD_LOCATION_REQUEST = 3
+};
+
+
+enum input_device_type {
+ B_POINTING_DEVICE = 0,
+ B_KEYBOARD_DEVICE = 1,
+ B_UNDEFINED_DEVICE = 2
+};
+
+/*
+ what == B_INPUT_DEVICES_CHANGED
+ FindString("name", name_of_device);
+ FindInt32("opcode", input_device_notification);
+*/
+
+enum input_device_notification {
+ B_INPUT_DEVICE_ADDED = 0x0001,
+ B_INPUT_DEVICE_STARTED = 0x0002,
+ B_INPUT_DEVICE_STOPPED = 0x0004,
+ B_INPUT_DEVICE_REMOVED = 0x0008
+};
+
+
+class BInputDevice;
+
+
+_IMPEXP_BE BInputDevice* find_input_device(const char *name);
+_IMPEXP_BE status_t get_input_devices(BList *list);
+_IMPEXP_BE status_t watch_input_devices(BMessenger target, bool start);
+
+
+class BInputDevice {
+public:
+ ~BInputDevice();
+
+ const char* Name() const;
+ input_device_type Type() const;
+ bool IsRunning() const;
+
+ status_t Start();
+ status_t Stop();
+ status_t Control(uint32 code,
+ BMessage *message);
+
+ static status_t Start(input_device_type type);
+ static status_t Stop(input_device_type type);
+ static status_t Control(input_device_type type,
+ uint32 code,
+ BMessage *message);
+
+private:
+ friend BInputDevice* find_input_device(const char *name);
+ friend status_t get_input_devices(BList *list);
+
+ BInputDevice();
+ void set_name_and_type(const char *name,
+ input_device_type type);
+
+ char* fName;
+ input_device_type fType;
+ uint32 _reserved[4];
+};
+
+
+#endif
diff --git a/headers/os/interface/InterfaceDefs.h b/headers/os/interface/InterfaceDefs.h
new file mode 100644
index 0000000000..4c1e6aa5dc
--- /dev/null
+++ b/headers/os/interface/InterfaceDefs.h
@@ -0,0 +1,366 @@
+//------------------------------------------------------------------------------
+// Copyright (c) 2001-2002, OpenBeOS
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+//
+// File Name: InterfaceDefs.h
+// Author: Erik Jaesler (erik@cgsoftware.com)
+// Description: General Interface Kit definitions and global functions.
+//------------------------------------------------------------------------------
+
+#ifndef _INTERFACE_DEFS_H
+#define _INTERFACE_DEFS_H
+
+// Standard Includes -----------------------------------------------------------
+
+// System Includes -------------------------------------------------------------
+#include
+#include
+#include
+
+// Project Includes ------------------------------------------------------------
+
+// Local Includes --------------------------------------------------------------
+
+// Local Defines ---------------------------------------------------------------
+
+// Globals ---------------------------------------------------------------------
+
+class BRect;
+
+/*----------------------------------------------------------------*/
+
+struct key_info {
+ uint32 modifiers;
+ uint8 key_states[16];
+};
+
+/*----------------------------------------------------------------*/
+
+#define B_UTF8_ELLIPSIS "\xE2\x80\xA6"
+#define B_UTF8_OPEN_QUOTE "\xE2\x80\x9C"
+#define B_UTF8_CLOSE_QUOTE "\xE2\x80\x9D"
+#define B_UTF8_COPYRIGHT "\xC2\xA9"
+#define B_UTF8_REGISTERED "\xC2\xAE"
+#define B_UTF8_TRADEMARK "\xE2\x84\xA2"
+#define B_UTF8_SMILING_FACE "\xE2\x98\xBB"
+#define B_UTF8_HIROSHI "\xE5\xBC\x98"
+
+/*----------------------------------------------------------------*/
+
+enum { B_BACKSPACE = 0x08,
+ B_RETURN = 0x0a,
+ B_ENTER = 0x0a,
+ B_SPACE = 0x20,
+ B_TAB = 0x09,
+ B_ESCAPE = 0x1b,
+ B_SUBSTITUTE = 0x1a,
+
+ B_LEFT_ARROW = 0x1c,
+ B_RIGHT_ARROW = 0x1d,
+ B_UP_ARROW = 0x1e,
+ B_DOWN_ARROW = 0x1f,
+
+ B_INSERT = 0x05,
+ B_DELETE = 0x7f,
+ B_HOME = 0x01,
+ B_END = 0x04,
+ B_PAGE_UP = 0x0b,
+ B_PAGE_DOWN = 0x0c,
+
+ B_FUNCTION_KEY = 0x10 };
+
+enum { B_F1_KEY = 0x02,
+ B_F2_KEY = 0x03,
+ B_F3_KEY = 0x04,
+ B_F4_KEY = 0x05,
+ B_F5_KEY = 0x06,
+ B_F6_KEY = 0x07,
+ B_F7_KEY = 0x08,
+ B_F8_KEY = 0x09,
+ B_F9_KEY = 0x0a,
+ B_F10_KEY = 0x0b,
+ B_F11_KEY = 0x0c,
+ B_F12_KEY = 0x0d,
+ B_PRINT_KEY = 0x0e,
+ B_SCROLL_KEY = 0x0f,
+ B_PAUSE_KEY = 0x10 };
+
+struct key_map {
+ uint32 version;
+ uint32 caps_key;
+ uint32 scroll_key;
+ uint32 num_key;
+ uint32 left_shift_key;
+ uint32 right_shift_key;
+ uint32 left_command_key;
+ uint32 right_command_key;
+ uint32 left_control_key;
+ uint32 right_control_key;
+ uint32 left_option_key;
+ uint32 right_option_key;
+ uint32 menu_key;
+ uint32 lock_settings;
+ int32 control_map[128];
+ int32 option_caps_shift_map[128];
+ int32 option_caps_map[128];
+ int32 option_shift_map[128];
+ int32 option_map[128];
+ int32 caps_shift_map[128];
+ int32 caps_map[128];
+ int32 shift_map[128];
+ int32 normal_map[128];
+ int32 acute_dead_key[32];
+ int32 grave_dead_key[32];
+ int32 circumflex_dead_key[32];
+ int32 dieresis_dead_key[32];
+ int32 tilde_dead_key[32];
+ uint32 acute_tables;
+ uint32 grave_tables;
+ uint32 circumflex_tables;
+ uint32 dieresis_tables;
+ uint32 tilde_tables;
+};
+
+struct mouse_map {
+ uint32 left;
+ uint32 right;
+ uint32 middle;
+};
+
+/*----------------------------------------------------------------*/
+
+enum border_style {
+ B_PLAIN_BORDER,
+ B_FANCY_BORDER,
+ B_NO_BORDER
+};
+
+/*----------------------------------------------------------------*/
+
+enum orientation {
+ B_HORIZONTAL,
+ B_VERTICAL
+};
+
+/*----------------------------------------------------------------*/
+
+enum button_width {
+ B_WIDTH_AS_USUAL,
+ B_WIDTH_FROM_WIDEST,
+ B_WIDTH_FROM_LABEL
+};
+
+/*----------------------------------------------------------------*/
+
+enum join_mode {
+ B_ROUND_JOIN=0,
+ B_MITER_JOIN,
+ B_BEVEL_JOIN,
+ B_BUTT_JOIN,
+ B_SQUARE_JOIN
+};
+
+enum cap_mode {
+ B_ROUND_CAP=B_ROUND_JOIN,
+ B_BUTT_CAP=B_BUTT_JOIN,
+ B_SQUARE_CAP=B_SQUARE_JOIN
+};
+
+const float B_DEFAULT_MITER_LIMIT = 10.0F;
+
+/*----------------------------------------------------------------*/
+
+struct scroll_bar_info {
+ bool proportional;
+ bool double_arrows;
+ int32 knob;
+ int32 min_knob_size;
+};
+
+/*----------------------------------------------------------------*/
+
+enum alignment {
+ B_ALIGN_LEFT,
+ B_ALIGN_RIGHT,
+ B_ALIGN_CENTER
+};
+
+enum vertical_alignment {
+ B_ALIGN_TOP = 0x10L,
+ B_ALIGN_MIDDLE = 0x20,
+ B_ALIGN_BOTTOM = 0x30,
+ B_ALIGN_NO_VERTICAL = -1L
+};
+
+/*----------------------------------------------------------------*/
+
+enum {
+ B_CONTROL_TABLE = 0x00000001,
+ B_OPTION_CAPS_SHIFT_TABLE = 0x00000002,
+ B_OPTION_CAPS_TABLE = 0x00000004,
+ B_OPTION_SHIFT_TABLE = 0x00000008,
+ B_OPTION_TABLE = 0x00000010,
+ B_CAPS_SHIFT_TABLE = 0x00000020,
+ B_CAPS_TABLE = 0x00000040,
+ B_SHIFT_TABLE = 0x00000080,
+ B_NORMAL_TABLE = 0x00000100
+};
+
+/*----------------------------------------------------------------*/
+
+enum {
+ B_SHIFT_KEY = 0x00000001,
+ B_COMMAND_KEY = 0x00000002,
+ B_CONTROL_KEY = 0x00000004,
+ B_CAPS_LOCK = 0x00000008,
+ B_SCROLL_LOCK = 0x00000010,
+ B_NUM_LOCK = 0x00000020,
+ B_OPTION_KEY = 0x00000040,
+ B_MENU_KEY = 0x00000080,
+ B_LEFT_SHIFT_KEY = 0x00000100,
+ B_RIGHT_SHIFT_KEY = 0x00000200,
+ B_LEFT_COMMAND_KEY = 0x00000400,
+ B_RIGHT_COMMAND_KEY = 0x00000800,
+ B_LEFT_CONTROL_KEY = 0x00001000,
+ B_RIGHT_CONTROL_KEY = 0x00002000,
+ B_LEFT_OPTION_KEY = 0x00004000,
+ B_RIGHT_OPTION_KEY = 0x00008000
+};
+
+/*----------------------------------------------------------------*/
+
+enum bitmap_tiling {
+ B_TILE_BITMAP_X = 0x00000001,
+ B_TILE_BITMAP_Y = 0x00000002,
+ B_TILE_BITMAP = 0x00000003
+};
+
+enum overlay_options {
+ B_OVERLAY_FILTER_HORIZONTAL = 0x00010000,
+ B_OVERLAY_FILTER_VERTICAL = 0x00020000,
+ B_OVERLAY_MIRROR = 0x00040000,
+ B_OVERLAY_TRANSFER_CHANNEL = 0x00080000
+};
+
+/*----------------------------------------------------------------*/
+
+_IMPEXP_BE status_t get_deskbar_frame(BRect *frame);
+
+_IMPEXP_BE const color_map *system_colors();
+
+_IMPEXP_BE status_t set_screen_space(int32 index, uint32 res,
+ bool stick = true);
+
+_IMPEXP_BE status_t get_scroll_bar_info(scroll_bar_info *info);
+_IMPEXP_BE status_t set_scroll_bar_info(scroll_bar_info *info);
+
+_IMPEXP_BE status_t get_mouse_type(int32 *type);
+_IMPEXP_BE status_t set_mouse_type(int32 type);
+_IMPEXP_BE status_t get_mouse_map(mouse_map *map);
+_IMPEXP_BE status_t set_mouse_map(mouse_map *map);
+_IMPEXP_BE status_t get_click_speed(bigtime_t *speed);
+_IMPEXP_BE status_t set_click_speed(bigtime_t speed);
+_IMPEXP_BE status_t get_mouse_speed(int32 *speed);
+_IMPEXP_BE status_t set_mouse_speed(int32 speed);
+_IMPEXP_BE status_t get_mouse_acceleration(int32 *speed);
+_IMPEXP_BE status_t set_mouse_acceleration(int32 speed);
+
+_IMPEXP_BE status_t get_key_repeat_rate(int32 *rate);
+_IMPEXP_BE status_t set_key_repeat_rate(int32 rate);
+_IMPEXP_BE status_t get_key_repeat_delay(bigtime_t *delay);
+_IMPEXP_BE status_t set_key_repeat_delay(bigtime_t delay);
+
+_IMPEXP_BE uint32 modifiers();
+_IMPEXP_BE status_t get_key_info(key_info *info);
+_IMPEXP_BE void get_key_map(key_map **map, char **key_buffer);
+_IMPEXP_BE status_t get_keyboard_id(uint16 *id);
+_IMPEXP_BE void set_modifier_key(uint32 modifier, uint32 key);
+_IMPEXP_BE void set_keyboard_locks(uint32 modifiers);
+
+_IMPEXP_BE rgb_color keyboard_navigation_color();
+
+_IMPEXP_BE int32 count_workspaces();
+_IMPEXP_BE void set_workspace_count(int32 count);
+_IMPEXP_BE int32 current_workspace();
+_IMPEXP_BE void activate_workspace(int32 workspace);
+
+_IMPEXP_BE bigtime_t idle_time();
+
+_IMPEXP_BE void run_select_printer_panel();
+_IMPEXP_BE void run_add_printer_panel();
+_IMPEXP_BE void run_be_about();
+
+_IMPEXP_BE void set_focus_follows_mouse(bool follow);
+_IMPEXP_BE bool focus_follows_mouse();
+
+enum mode_mouse {
+ B_NORMAL_MOUSE = 0,
+ B_FOCUS_FOLLOWS_MOUSE = 1,
+ B_WARP_MOUSE = 3,
+ B_INSTANT_WARP_MOUSE = 7
+};
+
+_IMPEXP_BE void set_mouse_mode(mode_mouse mode);
+_IMPEXP_BE mode_mouse mouse_mode();
+
+enum color_which {
+ B_PANEL_BACKGROUND_COLOR = 1,
+ B_MENU_BACKGROUND_COLOR = 2,
+ B_MENU_SELECTION_BACKGROUND_COLOR = 6,
+ B_MENU_ITEM_TEXT_COLOR = 7,
+ B_MENU_SELECTED_ITEM_TEXT_COLOR = 8,
+ B_WINDOW_TAB_COLOR = 3,
+ B_KEYBOARD_NAVIGATION_COLOR = 4,
+ B_DESKTOP_COLOR = 5
+};
+
+_IMPEXP_BE rgb_color ui_color(color_which which);
+_IMPEXP_BE rgb_color tint_color(rgb_color color, float tint);
+
+extern "C" status_t _init_interface_kit_();
+ /* effects on standard gray level */
+const float B_LIGHTEN_MAX_TINT = 0.0F; /* 216 --> 255.0 (255) */
+const float B_LIGHTEN_2_TINT = 0.385F; /* 216 --> 240.0 (240) */
+const float B_LIGHTEN_1_TINT = 0.590F; /* 216 --> 232.0 (232) */
+
+const float B_NO_TINT = 1.0F; /* 216 --> 216.0 (216) */
+
+const float B_DARKEN_1_TINT = 1.147F; /* 216 --> 184.2 (184) */
+const float B_DARKEN_2_TINT = 1.295F; /* 216 --> 152.3 (152) */
+const float B_DARKEN_3_TINT = 1.407F; /* 216 --> 128.1 (128) */
+const float B_DARKEN_4_TINT = 1.555F; /* 216 --> 96.1 (96) */
+const float B_DARKEN_MAX_TINT = 2.0F; /* 216 --> 0.0 (0) */
+
+const float B_DISABLED_LABEL_TINT = B_DARKEN_3_TINT;
+const float B_HIGHLIGHT_BACKGROUND_TINT = B_DARKEN_2_TINT;
+const float B_DISABLED_MARK_TINT = B_LIGHTEN_2_TINT;
+
+/*-------------------------------------------------------------*/
+/*-------------------------------------------------------------*/
+
+#endif // _INTERFACE_DEFS_H
+
+/*
+ * $Log $
+ *
+ * $Id $
+ *
+ */
+
diff --git a/headers/os/interface/ListItem.h b/headers/os/interface/ListItem.h
new file mode 100644
index 0000000000..0fa1274b47
--- /dev/null
+++ b/headers/os/interface/ListItem.h
@@ -0,0 +1,103 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// File: ListItem.h
+//
+// Description: BListView represents a one-dimensional list view.
+//
+// Copyright 2001, Ulrich Wimboeck
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#ifndef _LIST_ITEM_H
+#define _LIST_ITEM_H
+
+#include
+#include
+#include
+
+class BFont ;
+class BMessage ;
+class BOutlineListView ;
+class BView ;
+
+#ifdef USE_OPENBEOS_NAMESPACE
+namespace OpenBeOS
+{
+#endif
+
+/*----------------------------------------------------------------*/
+/*----- BListItem class ------------------------------------------*/
+
+/**
+ * A BListItem represents a single item in a BListView (or
+ * BOutlineListView). The BListItem object provides drawing
+ * instructions that can draw the item (through DrawItem()), and
+ * keeps track of the item's state. To use a BListItem, you must
+ * add it to a BListView through BListView::AddItem()
+ * (BOutlineListView provides additional item-adding functions).
+ * The BListView object provides the drawing context for the
+ * BListItem's DrawItem() function.
+ *
+ * BListItem is abstract; each subclass must implement DrawItem().
+ * BStringItem—the only BListItem subclass provided by
+ * Be—implements the function to draw the item as a line of text.
+ */
+
+class BListItem : public BArchivable
+{
+public:
+ BListItem(uint32 outlineLevel = 0, bool expanded = true) ;
+ BListItem(BMessage* data) ;
+virtual ~BListItem() ;
+
+virtual status_t Archive(BMessage* data, bool deep = true) const ;
+
+ float Height() const ;
+ float Width() const ;
+ bool IsSelected() const ;
+ void Select() ;
+ void Deselect() ;
+
+virtual void SetEnabled(bool on) ;
+ bool IsEnabled() const ;
+
+ void SetHeight(float height) ;
+ void SetWidth(float width) ;
+virtual void DrawItem(BView* owner, BRect bounds, bool complete = false) = 0 ;
+virtual void Update(BView* owner, const BFont* font) ;
+
+virtual status_t Perform(perform_code d, void* arg) ;
+
+ bool IsExpanded() const ;
+ void SetExpanded(bool expanded) ;
+ uint32 OutlineLevel() const ;
+
+/*----- Private or reserved -----------------------------------------*/
+private:
+friend class BOutlineListView ;
+
+ BListItem(const BListItem&) ;
+
+ BListItem& operator=(const BListItem&) ;
+
+ float fWidth ;
+ float fHeight ;
+ uint32 fLevel ;
+ bool fSelected ;
+ bool fEnabled ;
+
+ bool fExpanded ;
+ bool fHasSubItems ;
+ bool fVisible ;
+} ;
+
+// in the interface kit the BStringItem class is declared within ListItem.h
+#ifndef USE_OPENBEOS_NAMESPACE
+#include "StringItem.h"
+#endif
+
+#ifdef USE_OPENBEOS_NAMESPACE
+}
+#endif
+
+#endif /* _LIST_ITEM_H */
diff --git a/headers/os/interface/ListView.h b/headers/os/interface/ListView.h
new file mode 100644
index 0000000000..93ca391ccd
--- /dev/null
+++ b/headers/os/interface/ListView.h
@@ -0,0 +1,213 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// File: ListView.h
+//
+// Description: BListView represents a one-dimensional list view.
+//
+// Copyright 2001, Ulrich Wimboeck
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#ifndef _LIST_VIEW_H
+#define _LIST_VIEW_H
+
+#include
+#include
+#include
+#include
+#include
+
+struct track_data ;
+
+enum list_view_type {
+ B_SINGLE_SELECTION_LIST,
+ B_MULTIPLE_SELECTION_LIST
+};
+
+#ifdef USE_OPENBEOS_NAMESPACE
+namespace OpenBeOS
+{
+#endif
+
+/*----------------------------------------------------------------*/
+/*----- BListView class ------------------------------------------*/
+
+/**
+ * A BListView displays a list of items the user can select and
+ * invoke. Each item is a kind of BListItem object. The BListView
+ * manages the layout of the list and the interaction with the user;
+ * it leaves the display of each item to the BListItem objects.
+ * A BListItem is not a view and draws only when called upon by
+ * the BListView.
+ */
+
+class BListView : public BView, public BInvoker
+{
+
+public:
+BListView(BRect frame, const char* name,
+ list_view_type type = B_SINGLE_SELECTION_LIST,
+ uint32 resizeMask = B_FOLLOW_LEFT | B_FOLLOW_TOP,
+ uint32 flags = B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE) ;
+
+BListView(BMessage* data) ;
+virtual ~BListView() ;
+
+static BArchivable* Instantiate(BMessage* data) ;
+virtual status_t Archive(BMessage* data, bool deep = true) const ;
+virtual void Draw(BRect updateRect) ;
+virtual void MessageReceived(BMessage* msg) ;
+virtual void MouseDown(BPoint where) ;
+virtual void KeyDown(const char* bytes, int32 numBytes) ;
+virtual void MakeFocus(bool state = true) ;
+virtual void FrameResized(float newWidth, float newHeight) ;
+virtual void TargetedByScrollView(BScrollView* scroller) ;
+ void ScrollTo(float x, float y) ;
+virtual void ScrollTo(BPoint where) ;
+virtual bool AddItem(BListItem* item) ;
+virtual bool AddItem(BListItem* item, int32 atIndex) ;
+virtual bool AddList(BList* newItems) ;
+virtual bool AddList(BList* newItems, int32 atIndex) ;
+virtual bool RemoveItem(BListItem* item) ;
+virtual BListItem* RemoveItem(int32 index) ;
+virtual bool RemoveItems(int32 index, int32 count) ;
+
+virtual void SetSelectionMessage(BMessage* message) ;
+virtual void SetInvocationMessage(BMessage* message) ;
+
+ BMessage* SelectionMessage() const ;
+ uint32 SelectionCommand() const ;
+ BMessage* InvocationMessage() const ;
+ uint32 InvocationCommand() const ;
+
+virtual void SetListType(list_view_type type) ;
+ list_view_type ListType() const ;
+
+ BListItem* ItemAt(int32 index) const ;
+ int32 IndexOf(BPoint point) const ;
+ int32 IndexOf(BListItem *item) const ;
+ BListItem* FirstItem() const ;
+ BListItem* LastItem() const ;
+ bool HasItem(BListItem *item) const ;
+ int32 CountItems() const ;
+virtual void MakeEmpty() ;
+ bool IsEmpty() const ;
+ void DoForEach(bool (*func)(BListItem *)) ;
+ void DoForEach(bool (*func)(BListItem *, void *), void *) ;
+ const BListItem **Items() const ;
+ void InvalidateItem(int32 index) ;
+ void ScrollToSelection() ;
+
+ void Select(int32 index, bool extend = false) ;
+ void Select(int32 from, int32 to, bool extend = false) ;
+ bool IsItemSelected(int32 index) const ;
+ int32 CurrentSelection(int32 index = 0) const ;
+virtual status_t Invoke(BMessage* msg = NULL) ;
+
+ void DeselectAll() ;
+ void DeselectExcept(int32 except_from, int32 except_to) ;
+ void Deselect(int32 index) ;
+
+virtual void SelectionChanged() ;
+
+ void SortItems(int (*cmp)(const void *, const void *)) ;
+
+
+/* These functions bottleneck through DoMiscellaneous() */
+ bool SwapItems(int32 a, int32 b) ;
+ bool MoveItem(int32 from, int32 to) ;
+ bool ReplaceItem(int32 index, BListItem* item) ;
+
+virtual void AttachedToWindow() ;
+virtual void FrameMoved(BPoint new_position) ;
+
+ BRect ItemFrame(int32 index) ;
+
+virtual BHandler* ResolveSpecifier(BMessage* msg,
+ int32 index,
+ BMessage* specifier,
+ int32 form,
+ const char* property) ;
+virtual status_t GetSupportedSuites(BMessage* data) ;
+
+virtual status_t Perform(perform_code d, void* arg) ;
+
+virtual void WindowActivated(bool state) ;
+virtual void MouseUp(BPoint pt) ;
+virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* msg) ;
+virtual void DetachedFromWindow() ;
+virtual bool InitiateDrag(BPoint pt, int32 itemIndex,
+ bool initialySelected) ;
+
+virtual void ResizeToPreferred() ;
+virtual void GetPreferredSize(float* width, float* height) ;
+virtual void AllAttached() ;
+virtual void AllDetached() ;
+
+protected:
+
+ enum MiscCode { B_NO_OP, B_REPLACE_OP, B_MOVE_OP, B_SWAP_OP } ;
+ union MiscData {
+ struct Spare { int32 data[5] ; } ;
+ struct Replace { int32 index ; BListItem* item ; } replace ;
+ struct Move { int32 from; int32 to; } move ;
+ struct Swap { int32 a ; int32 b ; } swap ;
+ } ;
+
+virtual bool DoMiscellaneous(MiscCode code, MiscData* data) ;
+
+/*----- Private or reserved -----------------------------------------*/
+
+private:
+ friend class BOutlineListView ; // try to remove friend classes
+
+ BListView& operator=(const BListView&) ;
+
+ void InitObject(list_view_type type) ;
+ void FixupScrollBar() ;
+ void InvalidateFrom(int32 index) ;
+ status_t PostMsg(BMessage* msg) ;
+ void FontChanged() ;
+ int32 RangeCheck(int32 index) ;
+ bool _Select(int32 index, bool extend) ;
+ bool _Select(int32 from, int32 to, bool extend) ;
+ bool _Deselect(int32 index) ;
+ void Deselect(int32 from, int32 to) ;
+ bool _DeselectAll(int32 except_from, int32 except_to) ;
+ void PerformDelayedSelect() ;
+ bool TryInitiateDrag(BPoint where) ;
+ int32 CalcFirstSelected(int32 after) ;
+ int32 CalcLastSelected(int32 before) ;
+virtual void DrawItem(BListItem* item, BRect itemRect,
+ bool complete = false) ;
+
+ bool DoSwapItems(int32 a, int32 b) ;
+ bool DoMoveItem(int32 from, int32 to) ;
+ bool DoReplaceItem(int32 index, BListItem* item) ;
+ void RescanSelection(int32 from, int32 to) ;
+ void DoMouseUp(BPoint where) ;
+ void DoMouseMoved(BPoint where) ;
+
+ BList fList ;
+ list_view_type fListType ;
+ int32 fFirstSelected ;
+ int32 fLastSelected ;
+ int32 fAnchorIndex ;
+ float fWidth ;
+ BMessage* fSelectMessage ;
+ BScrollView* fScrollView ;
+ track_data* fTrack ;
+} ;
+
+inline void BListView::ScrollTo(float x, float y)
+ /* OK, no private parts */
+ { ScrollTo(BPoint(x, y)) ; }
+
+/*-------------------------------------------------------------*/
+/*-------------------------------------------------------------*/
+
+#ifdef USE_OPENBEOS_NAMESPACE
+}
+#endif
+
+#endif /* _LIST_VIEW_H */
diff --git a/headers/os/interface/Point.h b/headers/os/interface/Point.h
new file mode 100644
index 0000000000..5d7684fdf4
--- /dev/null
+++ b/headers/os/interface/Point.h
@@ -0,0 +1,114 @@
+//------------------------------------------------------------------------------
+// Copyright (c) 2001-2002, OpenBeOS
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+//
+// File Name: Point.h
+// Author: Frans van Nispen
+// Description: BPoint represents a single x,y coordinate.
+//------------------------------------------------------------------------------
+#ifndef _POINT_H
+#define _POINT_H
+
+// Standard Includes -----------------------------------------------------------
+
+// System Includes -------------------------------------------------------------
+#include
+#include
+
+// Project Includes ------------------------------------------------------------
+
+// Local Includes --------------------------------------------------------------
+
+// Local Defines ---------------------------------------------------------------
+
+// Globals ---------------------------------------------------------------------
+
+
+class BRect;
+
+// BPoint class ----------------------------------------------------------------
+class BPoint {
+public:
+ float x;
+ float y;
+
+ BPoint();
+ BPoint(float X, float Y);
+ BPoint(const BPoint &p);
+
+ BPoint &operator=(const BPoint &p);
+ void Set(float X, float Y);
+
+ void ConstrainTo(BRect r);
+ void PrintToStream() const;
+
+ BPoint operator+(const BPoint &p) const;
+ BPoint operator-(const BPoint &p) const;
+ BPoint& operator+=(const BPoint &p);
+ BPoint& operator-=(const BPoint &p);
+
+ bool operator!=(const BPoint &p) const;
+ bool operator==(const BPoint &p) const;
+};
+//------------------------------------------------------------------------------
+
+extern _IMPEXP_BE const BPoint B_ORIGIN; // returns (0,0)
+
+//------------------------------------------------------------------------------
+inline BPoint::BPoint()
+{
+ x = y = 0;
+}
+//------------------------------------------------------------------------------
+inline BPoint::BPoint(float X, float Y)
+{
+ x = X;
+ y = Y;
+}
+//------------------------------------------------------------------------------
+inline BPoint::BPoint(const BPoint& pt)
+{
+ x = pt.x;
+ y = pt.y;
+}
+//------------------------------------------------------------------------------
+inline BPoint &BPoint::operator=(const BPoint& from)
+{
+ x = from.x;
+ y = from.y;
+ return *this;
+}
+//------------------------------------------------------------------------------
+inline void BPoint::Set(float X, float Y)
+{
+ x = X;
+ y = Y;
+}
+//------------------------------------------------------------------------------
+
+#endif // _POINT_H
+
+/*
+ * $Log $
+ *
+ * $Id $
+ *
+ */
+
diff --git a/headers/os/interface/PrintJob.h b/headers/os/interface/PrintJob.h
new file mode 100644
index 0000000000..f27a2c9e1e
--- /dev/null
+++ b/headers/os/interface/PrintJob.h
@@ -0,0 +1,123 @@
+/*******************************************************************************
+/
+/ File: PrintJob.h
+/
+/ Description: BPrintJob runs a printing session.
+/
+/ Copyright 1996-98, Be Incorporated, All Rights Reserved
+/
+*******************************************************************************/
+
+#ifndef _PRINTSESSION_H
+#define _PRINTSESSION_H
+
+#include
+#include /* For convenience */
+#include
+
+class BView;
+
+/*----------------------------------------------------------------*/
+/*----- BPrintJob related structures -----------------------------*/
+
+struct print_file_header {
+ int32 version;
+ int32 page_count;
+ off_t first_page;
+ int32 _reserved_3_;
+ int32 _reserved_4_;
+ int32 _reserved_5_;
+};
+
+struct _page_header_;
+
+/*----------------------------------------------------------------*/
+/*----- BPrintJob class ------------------------------------------*/
+
+class BPrintJob {
+public:
+
+ enum // These values are returned by PrinterType()
+ {
+ B_BW_PRINTER = 0,
+ B_COLOR_PRINTER
+ };
+
+
+ BPrintJob(const char *job_name);
+virtual ~BPrintJob();
+
+ void BeginJob();
+ void CommitJob();
+ status_t ConfigJob();
+ void CancelJob();
+
+ status_t ConfigPage();
+ void SpoolPage();
+
+ bool CanContinue();
+
+virtual void DrawView(BView *a_view, BRect a_rect, BPoint where);
+
+ BMessage *Settings() /* const */ ;
+ void SetSettings(BMessage *a_msg);
+ bool IsSettingsMessageValid(BMessage *a_msg) const;
+
+ BRect PaperRect();
+ BRect PrintableRect();
+ void GetResolution(int32 *xdpi, int32 *ydpi);
+
+ int32 FirstPage() /* const */ ;
+ int32 LastPage() /* const */ ;
+ int32 PrinterType(void * = NULL) const;
+
+
+/*----- Private or reserved -----------------------------------------*/
+private:
+
+virtual void _ReservedPrintJob1();
+virtual void _ReservedPrintJob2();
+virtual void _ReservedPrintJob3();
+virtual void _ReservedPrintJob4();
+
+ BPrintJob(const BPrintJob &);
+ BPrintJob &operator=(const BPrintJob &);
+
+ void RecurseView(BView *v, BPoint origin, BPicture *p, BRect r);
+ void MangleName(char *filename);
+ void HandlePageSetup(BMessage *setup);
+ bool HandlePrintSetup(BMessage *setup);
+
+ void NewPage();
+ void EndLastPage();
+
+ void AddSetupSpec();
+ void AddPicture(BPicture *picture, BRect *rect, BPoint where);
+
+ char* GetCurrentPrinterName() const;
+ void LoadDefaultSettings();
+
+ char * print_job_name;
+ int32 page_number;
+ BFile * spoolFile;
+ print_file_header current_header;
+ BRect paper_size;
+ BRect usable_size;
+ int pr_error;
+ char spool_file_name[256];
+ BMessage *setup_msg;
+ BMessage *default_setup_msg;
+ char stop_the_show;
+ int32 first_page;
+ int32 last_page;
+ short v_xres;
+ short v_yres;
+ _page_header_ * m_curPageHeader;
+ off_t m_curPageHeaderOffset;
+ uint32 _reserved[2];
+};
+
+/*-------------------------------------------------------------*/
+/*-------------------------------------------------------------*/
+
+#endif /* _PRINTSESSION_H */
diff --git a/headers/os/interface/RadioButton.h b/headers/os/interface/RadioButton.h
new file mode 100644
index 0000000000..973d0c1522
--- /dev/null
+++ b/headers/os/interface/RadioButton.h
@@ -0,0 +1,115 @@
+//------------------------------------------------------------------------------
+// Copyright (c) 2001-2002, OpenBeOS
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+//
+// File Name: RadioButton.cpp
+// Author: Marc Flerackers (mflerackers@androme.be)
+// Description: BRadioButton represents a single on/off button. All
+// sibling BRadioButton objects comprise a single
+// "multiple choice" control.
+//------------------------------------------------------------------------------
+
+#ifndef _RADIO_BUTTON_H
+#define _RADIO_BUTTON_H
+
+// Standard Includes -----------------------------------------------------------
+
+// System Includes -------------------------------------------------------------
+#include
+#include
+#include
+
+// Project Includes ------------------------------------------------------------
+
+// Local Includes --------------------------------------------------------------
+
+// Local Defines ---------------------------------------------------------------
+
+// Globals ---------------------------------------------------------------------
+
+// BRadioButton class ----------------------------------------------------------
+class BRadioButton : public BControl {
+
+public:
+ BRadioButton(BRect frame,
+ const char *name,
+ const char *label,
+ BMessage *message,
+ uint32 resizMask = B_FOLLOW_LEFT | B_FOLLOW_TOP,
+ uint32 flags = B_WILL_DRAW | B_NAVIGABLE);
+
+ BRadioButton(BMessage *archive);
+virtual ~BRadioButton();
+
+static BArchivable *Instantiate(BMessage *archive);
+virtual status_t Archive(BMessage *archive, bool deep = true) const;
+
+virtual void Draw(BRect updateRect);
+virtual void MouseDown(BPoint point);
+virtual void AttachedToWindow();
+virtual void KeyDown(const char *bytes, int32 numBytes);
+virtual void SetValue(int32 value);
+virtual void GetPreferredSize(float *width, float *height);
+virtual void ResizeToPreferred();
+virtual status_t Invoke(BMessage *message = NULL);
+
+virtual void MessageReceived(BMessage *message);
+virtual void WindowActivated(bool active);
+virtual void MouseUp(BPoint point);
+virtual void MouseMoved(BPoint point, uint32 transit, const BMessage *message);
+virtual void DetachedFromWindow();
+virtual void FrameMoved(BPoint newLocation);
+virtual void FrameResized(float width, float height);
+
+virtual BHandler *ResolveSpecifier(BMessage *message,
+ int32 index,
+ BMessage *specifier,
+ int32 what,
+ const char *property);
+
+virtual void MakeFocus(bool focused = true);
+virtual void AllAttached();
+virtual void AllDetached();
+virtual status_t GetSupportedSuites(BMessage *message);
+
+virtual status_t Perform(perform_code d, void *arg);
+
+private:
+friend status_t _init_interface_kit_();
+
+virtual void _ReservedRadioButton1();
+virtual void _ReservedRadioButton2();
+
+ BRadioButton &operator=(const BRadioButton &);
+static BBitmap *sBitmaps[2][3];
+
+ bool fOutlined;
+ uint32 _reserved[2];
+};
+//------------------------------------------------------------------------------
+
+#endif // _RADIO_BUTTON_H
+
+/*
+ * $Log $
+ *
+ * $Id $
+ *
+ */
diff --git a/headers/os/interface/Rect.h b/headers/os/interface/Rect.h
new file mode 100644
index 0000000000..a28b215049
--- /dev/null
+++ b/headers/os/interface/Rect.h
@@ -0,0 +1,223 @@
+//------------------------------------------------------------------------------
+// Copyright (c) 2001-2002, OpenBeOS
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+//
+// File Name: Rect.h
+// Author: Frans van Nispen (xlr8@tref.nl)
+// Description: BRect represents a rectangular area.
+//------------------------------------------------------------------------------
+
+#ifndef _RECT_H
+#define _RECT_H
+
+// Standard Includes -----------------------------------------------------------
+#include
+
+// System Includes -------------------------------------------------------------
+#include
+#include
+
+// Project Includes ------------------------------------------------------------
+
+// Local Includes --------------------------------------------------------------
+
+// Local Defines ---------------------------------------------------------------
+
+// Globals ---------------------------------------------------------------------
+
+
+// BRect class -----------------------------------------------------------------
+class BRect {
+public:
+ float left;
+ float top;
+ float right;
+ float bottom;
+
+ BRect();
+ BRect(const BRect &r);
+ BRect(float l, float t, float r, float b);
+ BRect(BPoint lt, BPoint rb);
+
+ BRect &operator=(const BRect &r);
+ void Set(float l, float t, float r, float b);
+
+ void PrintToStream() const;
+
+ BPoint LeftTop() const;
+ BPoint RightBottom() const;
+ BPoint LeftBottom() const;
+ BPoint RightTop() const;
+
+ void SetLeftTop(const BPoint p);
+ void SetRightBottom(const BPoint p);
+ void SetLeftBottom(const BPoint p);
+ void SetRightTop(const BPoint p);
+
+ // transformation
+ void InsetBy(BPoint p);
+ void InsetBy(float dx, float dy);
+ void OffsetBy(BPoint p);
+ void OffsetBy(float dx, float dy);
+ void OffsetTo(BPoint p);
+ void OffsetTo(float x, float y);
+
+ // expression transformations
+ BRect & InsetBySelf(BPoint);
+ BRect & InsetBySelf(float dx, float dy);
+ BRect InsetByCopy(BPoint);
+ BRect InsetByCopy(float dx, float dy);
+ BRect & OffsetBySelf(BPoint);
+ BRect & OffsetBySelf(float dx, float dy);
+ BRect OffsetByCopy(BPoint);
+ BRect OffsetByCopy(float dx, float dy);
+ BRect & OffsetToSelf(BPoint);
+ BRect & OffsetToSelf(float dx, float dy);
+ BRect OffsetToCopy(BPoint);
+ BRect OffsetToCopy(float dx, float dy);
+
+ // comparison
+ bool operator==(BRect r) const;
+ bool operator!=(BRect r) const;
+
+ // intersection and union
+ BRect operator&(BRect r) const;
+ BRect operator|(BRect r) const;
+
+ bool Intersects(BRect r) const;
+ bool IsValid() const;
+ float Width() const;
+ int32 IntegerWidth() const;
+ float Height() const;
+ int32 IntegerHeight() const;
+ bool Contains(BPoint p) const;
+ bool Contains(BRect r) const;
+
+};
+//------------------------------------------------------------------------------
+
+// inline definitions ----------------------------------------------------------
+
+inline BPoint BRect::LeftTop() const
+{
+ return(*((const BPoint*)&left));
+}
+
+inline BPoint BRect::RightBottom() const
+{
+ return(*((const BPoint*)&right));
+}
+
+inline BPoint BRect::LeftBottom() const
+{
+ return(BPoint(left, bottom));
+}
+
+inline BPoint BRect::RightTop() const
+{
+ return(BPoint(right, top));
+}
+
+inline BRect::BRect()
+{
+ top = left = 0;
+ bottom = right = -1;
+}
+
+inline BRect::BRect(float l, float t, float r, float b)
+{
+ left = l;
+ top = t;
+ right = r;
+ bottom = b;
+}
+
+inline BRect::BRect(const BRect &r)
+{
+ left = r.left;
+ top = r.top;
+ right = r.right;
+ bottom = r.bottom;
+}
+
+inline BRect::BRect(BPoint leftTop, BPoint rightBottom)
+{
+ left = leftTop.x;
+ top = leftTop.y;
+ right = rightBottom.x;
+ bottom = rightBottom.y;
+}
+
+inline BRect &BRect::operator=(const BRect& from)
+{
+ left = from.left;
+ top = from.top;
+ right = from.right;
+ bottom = from.bottom;
+ return *this;
+}
+
+inline void BRect::Set(float l, float t, float r, float b)
+{
+ left = l;
+ top = t;
+ right = r;
+ bottom = b;
+}
+
+inline bool BRect::IsValid() const
+{
+ if (left <= right && top <= bottom)
+ return true;
+ else
+ return false;
+}
+
+inline int32 BRect::IntegerWidth() const
+{
+ return((int32)ceil(right - left));
+}
+
+inline float BRect::Width() const
+{
+ return(right - left);
+}
+
+inline int32 BRect::IntegerHeight() const
+{
+ return((int32)ceil(bottom - top));
+}
+
+inline float BRect::Height() const
+{
+ return(bottom - top);
+}
+
+//------------------------------------------------------------------------------
+
+#endif // _RECT_H
+
+/*
+ * $Log $
+ *
+ * $Id $
+ *
+ */
+
diff --git a/headers/os/interface/StatusBar.h b/headers/os/interface/StatusBar.h
new file mode 100644
index 0000000000..1a0e6de313
--- /dev/null
+++ b/headers/os/interface/StatusBar.h
@@ -0,0 +1,141 @@
+//------------------------------------------------------------------------------
+// Copyright (c) 2001-2002, OpenBeOS
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+//
+// File Name: StatusBar.h
+// Author: Marc Flerackers (mflerackers@androme.be)
+// Description: BStatusBar displays a "percentage-of-completion" gauge.
+//------------------------------------------------------------------------------
+
+#ifndef _STATUS_BAR_H
+#define _STATUS_BAR_H
+
+// Standard Includes -----------------------------------------------------------
+
+// System Includes -------------------------------------------------------------
+#include
+#include
+
+// Project Includes ------------------------------------------------------------
+
+// Local Includes --------------------------------------------------------------
+
+// Local Defines ---------------------------------------------------------------
+
+// Globals ---------------------------------------------------------------------
+
+
+// BStatusBar class ------------------------------------------------------------
+class BStatusBar : public BView
+{
+public:
+ BStatusBar(BRect frame, const char *name, const char *label = NULL,
+ const char *trailingLabel = NULL);
+ BStatusBar(BMessage *archive);
+
+ virtual ~BStatusBar();
+
+ static BArchivable *Instantiate(BMessage *archive);
+ virtual status_t Archive(BMessage *archive, bool deep = true) const;
+
+ virtual void AttachedToWindow();
+ virtual void MessageReceived(BMessage *message);
+ virtual void Draw(BRect updateRect);
+
+ virtual void SetBarColor(rgb_color color);
+ virtual void SetBarHeight(float height);
+ virtual void SetText(const char *string);
+ virtual void SetTrailingText(const char *string);
+ virtual void SetMaxValue(float max);
+
+ void Update(float delta, const char *text = NULL, const char *trailingText = NULL);
+ virtual void Reset(const char *label = NULL, const char *trailingLabel = NULL);
+
+ float CurrentValue() const;
+ float MaxValue() const;
+ rgb_color BarColor() const;
+ float BarHeight() const;
+ const char *Text() const;
+ const char *TrailingText() const;
+ const char *Label() const;
+ const char *TrailingLabel() const;
+
+ virtual void MouseDown(BPoint point);
+ virtual void MouseUp(BPoint point);
+ virtual void WindowActivated(bool state);
+ virtual void MouseMoved(BPoint point, uint32 transit, const BMessage *message);
+ virtual void DetachedFromWindow();
+ virtual void FrameMoved(BPoint new_position);
+ virtual void FrameResized(float new_width, float new_height);
+
+ virtual BHandler *ResolveSpecifier(BMessage *message, int32 index, BMessage *specifier,
+ int32 what, const char *property);
+
+ virtual void ResizeToPreferred();
+ virtual void GetPreferredSize(float *width, float *height);
+ virtual void MakeFocus(bool state = true);
+ virtual void AllAttached();
+ virtual void AllDetached();
+ virtual status_t GetSupportedSuites(BMessage *data);
+
+ virtual status_t Perform(perform_code d, void *arg);
+
+private:
+ virtual void _ReservedStatusBar1();
+ virtual void _ReservedStatusBar2();
+ virtual void _ReservedStatusBar3();
+ virtual void _ReservedStatusBar4();
+
+ BStatusBar &operator=(const BStatusBar &);
+
+ void InitObject(const char *l, const char *aux_l);
+ void SetTextData(char **pp, const char *str);
+ void FillBar(BRect r);
+ void Resize();
+ void _Draw(BRect updateRect, bool bar_only);
+
+ char *fLabel;
+ char *fTrailingLabel;
+ char *fText;
+ char *fTrailingText;
+ float fMax;
+ float fCurrent;
+ float fBarHeight;
+ float fTrailingWidth;
+ rgb_color fBarColor;
+ float fEraseText;
+ float fEraseTrailingText;
+ bool fCustomBarHeight;
+ bool _pad1;
+ bool _pad2;
+ bool _pad3;
+ uint32 _reserved[3];
+};
+
+//------------------------------------------------------------------------------
+
+#endif // _STATUS_BAR_H
+
+/*
+ * $Log $
+ *
+ * $Id $
+ *
+ */
diff --git a/headers/os/interface/StringItem.h b/headers/os/interface/StringItem.h
new file mode 100644
index 0000000000..3760e86456
--- /dev/null
+++ b/headers/os/interface/StringItem.h
@@ -0,0 +1,55 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// File: StringItem.h
+//
+// Description:
+//
+// Copyright 2001, Ulrich Wimboeck
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#ifndef _STRING_ITEM_H
+#define _STRING_ITEM_H
+
+#include
+
+
+#ifdef USE_OPENBEOS_NAMESPACE
+namespace OpenBeOS
+{
+#endif
+
+/*----------------------------------------------------------------*/
+/*----- BStringItem class ----------------------------------------*/
+
+class BStringItem : public BListItem
+{
+public:
+ BStringItem(const char* text, uint32 outlineLevel = 0, bool expanded = true) ;
+ BStringItem(BMessage* data) ;
+virtual ~MyStringItem() ;
+
+static BArchivable *Instantiate(BMessage* data);
+virtual status_t Archive(BMessage* data, bool deep = true) const ;
+
+virtual void DrawItem(BView* owner, BRect frame, bool complete = false) ;
+virtual void SetText(const char* text) ;
+ const char* Text() const ;
+virtual void Update(BView* owner, const BFont* font) ;
+
+virtual status_t Perform(perform_code d, void* arg);
+
+private:
+
+ BStringItem(const BStringItem &) ;
+ BStringItem& operator=(const BStringItem &) ;
+
+ char* fText;
+ float fBaselineOffset ;
+} ;
+
+#ifdef USE_OPENBEOS_NAMESPACE
+}
+#endif
+
+#endif /* _STRING_ITEM_H */
diff --git a/headers/os/interface/StringView.h b/headers/os/interface/StringView.h
new file mode 100644
index 0000000000..444f305e4c
--- /dev/null
+++ b/headers/os/interface/StringView.h
@@ -0,0 +1,107 @@
+//------------------------------------------------------------------------------
+// Copyright (c) 2001-2002, OpenBeOS
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+//
+// File Name: StringView.h
+// Author: Frans van Nispen (xlr8@tref.nl)
+// Description: BStringView draw a non-editable text string
+//------------------------------------------------------------------------------
+
+#ifndef _STRING_VIEW_H
+#define _STRING_VIEW_H
+
+// Standard Includes -----------------------------------------------------------
+
+// System Includes -------------------------------------------------------------
+#include
+#include
+
+// Project Includes ------------------------------------------------------------
+
+// Local Includes --------------------------------------------------------------
+
+// Local Defines ---------------------------------------------------------------
+
+// Globals ---------------------------------------------------------------------
+
+
+// BStringView class -----------------------------------------------------------
+class BStringView : public BView{
+public:
+ BStringView(BRect bounds, const char* name, const char* text,
+ uint32 resizeFlags = B_FOLLOW_LEFT | B_FOLLOW_TOP,
+ uint32 flags = B_WILL_DRAW);
+ BStringView(BMessage* data);
+ virtual ~BStringView();
+ static BArchivable *Instantiate(BMessage* data);
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+ void SetText(const char* text);
+ const char *Text() const;
+ void SetAlignment(alignment flag);
+ alignment Alignment() const;
+
+ virtual void AttachedToWindow();
+ virtual void Draw(BRect bounds);
+
+ virtual void MessageReceived(BMessage* msg);
+ virtual void MouseDown(BPoint pt);
+ virtual void MouseUp(BPoint pt);
+ virtual void MouseMoved(BPoint pt, uint32 code, const BMessage* msg);
+ virtual void DetachedFromWindow();
+ virtual void FrameMoved(BPoint new_position);
+ virtual void FrameResized(float new_width, float new_height);
+
+ virtual BHandler *ResolveSpecifier( BMessage* msg, int32 index, BMessage* specifier,
+ int32 form, const char* property);
+
+ virtual void ResizeToPreferred();
+ virtual void GetPreferredSize(float* width, float* height);
+ virtual void MakeFocus(bool state = true);
+ virtual void AllAttached();
+ virtual void AllDetached();
+ virtual status_t GetSupportedSuites(BMessage* data);
+
+
+// Private or reserved ---------------------------------------------------------
+ virtual status_t Perform(perform_code d, void* arg);
+
+private:
+ virtual void _ReservedStringView1();
+ virtual void _ReservedStringView2();
+ virtual void _ReservedStringView3();
+
+ BStringView &operator=(const BStringView&);
+
+ char* fText;
+ alignment fAlign;
+ uint32 _reserved[3];
+};
+//------------------------------------------------------------------------------
+
+#endif // _STRINGVIEW_H
+
+/*
+ * $Log $
+ *
+ * $Id $
+ *
+ */
+
diff --git a/headers/os/interface/TextControl.h b/headers/os/interface/TextControl.h
new file mode 100644
index 0000000000..7dbdf68616
--- /dev/null
+++ b/headers/os/interface/TextControl.h
@@ -0,0 +1,145 @@
+//------------------------------------------------------------------------------
+// Copyright (c) 2001-2002, OpenBeOS
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+//
+// File Name: TextControl.h
+// Author: Frans van Nispen (xlr8@tref.nl)
+// Description: BTextControl displays text that can act like a control.
+//------------------------------------------------------------------------------
+#ifndef _TEXT_CONTROL_H
+#define _TEXT_CONTROL_H
+
+// Standard Includes -----------------------------------------------------------
+
+// System Includes -------------------------------------------------------------
+#include
+#include
+#include
+#include // For convenience
+
+// Project Includes ------------------------------------------------------------
+
+// Local Includes --------------------------------------------------------------
+
+// Local Defines ---------------------------------------------------------------
+
+// Globals ---------------------------------------------------------------------
+
+
+class _BTextInput_;
+
+// BTextControl class -----------------------------------------------------------
+class BTextControl : public BControl {
+public:
+ BTextControl(BRect frame, const char* name,
+ const char* label,
+ const char* initial_text, BMessage* message,
+ uint32 rmask = B_FOLLOW_LEFT | B_FOLLOW_TOP,
+ uint32 flags = B_WILL_DRAW | B_NAVIGABLE);
+ virtual ~BTextControl();
+ BTextControl(BMessage* data);
+ static BArchivable *Instantiate(BMessage* data);
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+ virtual void SetText(const char* text);
+ const char* Text() const;
+
+ virtual void SetValue(int32 value);
+ virtual status_t Invoke(BMessage* msg = NULL);
+
+ BTextView* TextView() const;
+
+ virtual void SetModificationMessage(BMessage* message);
+ BMessage* ModificationMessage() const;
+
+ virtual void SetAlignment(alignment label, alignment text);
+ void GetAlignment(alignment* label, alignment* text) const;
+ virtual void SetDivider(float dividing_line);
+ float Divider() const;
+
+ virtual void Draw(BRect updateRect);
+ virtual void MouseDown(BPoint where);
+ virtual void AttachedToWindow();
+ virtual void MakeFocus(bool focusState = true);
+ virtual void SetEnabled(bool state);
+ virtual void FrameMoved(BPoint new_position);
+ virtual void FrameResized(float new_width, float new_height);
+ virtual void WindowActivated(bool active);
+
+ virtual void GetPreferredSize(float* width, float* height);
+ virtual void ResizeToPreferred();
+
+ virtual void MessageReceived(BMessage* msg);
+ virtual BHandler *ResolveSpecifier(BMessage* msg, int32 index,
+ BMessage* specifier, int32 form,
+ const char* property);
+
+ virtual void MouseUp(BPoint pt);
+ virtual void MouseMoved(BPoint pt, uint32 code,
+ const BMessage* msg);
+ virtual void DetachedFromWindow();
+
+ virtual void AllAttached();
+ virtual void AllDetached();
+ virtual status_t GetSupportedSuites(BMessage* data);
+ virtual void SetFlags(uint32 flags);
+
+// Private or reserved ---------------------------------------------------------
+ virtual status_t Perform(perform_code d, void* arg);
+
+private:
+ friend class _BTextInput_;
+ virtual void _ReservedTextControl1();
+ virtual void _ReservedTextControl2();
+ virtual void _ReservedTextControl3();
+ virtual void _ReservedTextControl4();
+
+ BTextControl& operator=(const BTextControl&);
+
+ // this one is not defined, so I guess I am on my own here
+ _BTextInput_* fText;
+
+ char* fUnusedCharP; //fLabel; // this is in BControl
+ BMessage* fModificationMessage;
+ alignment fLabelAlign;
+ float fDivider;
+// uint16 fPrevWidth;
+// uint16 fPrevHeight;
+ uint32 _reserved[4];
+#if !_PR3_COMPATIBLE_
+ uint32 _more_reserved[4];
+#endif
+
+// bool fClean;
+ bool fSkipSetFlags; // will use this for SHIFT-TAB
+ bool fUnusedBool1;
+ bool fUnusedBool2;
+};
+//------------------------------------------------------------------------------
+
+#endif // _TEXTCONTROL_H
+
+/*
+ * $Log $
+ *
+ * $Id $
+ *
+ */
+
diff --git a/headers/os/interface/UnicodeBlockObjects.h b/headers/os/interface/UnicodeBlockObjects.h
new file mode 100644
index 0000000000..19070e8a12
--- /dev/null
+++ b/headers/os/interface/UnicodeBlockObjects.h
@@ -0,0 +1,125 @@
+//------------------------------------------------------------------------------
+// Copyright (c) 2001-2002, OpenBeOS
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+//
+// File Name: UnicodeBlockObjects.h
+// Author: Erik Jaesler (erik@cgsoftware.com)
+// Description: Predefined unicode_block objects
+//------------------------------------------------------------------------------
+
+#ifndef _UNICODEBLOCKOBJECTS_H
+#define _UNICODEBLOCKOBJECTS_H
+
+// Standard Includes -----------------------------------------------------------
+
+// System Includes -------------------------------------------------------------
+#include
+
+// Project Includes ------------------------------------------------------------
+
+// Local Includes --------------------------------------------------------------
+
+// Local Defines ---------------------------------------------------------------
+
+// Globals ---------------------------------------------------------------------
+
+
+// Unicode block list with their unicode encoding range
+const unicode_block B_BASIC_LATIN_BLOCK( /* 0000 - 007F */ 0x0000000000000000LL, 0x0000000000000001LL);
+const unicode_block B_LATIN1_SUPPLEMENT_BLOCK( /* 0080 - 00FF */ 0x0000000000000000LL, 0x0000000000000002LL);
+const unicode_block B_LATIN_EXTENDED_A_BLOCK( /* 0100 - 017F */ 0x0000000000000000LL, 0x0000000000000004LL);
+const unicode_block B_LATIN_EXTENDED_B_BLOCK( /* 0180 - 024F */ 0x0000000000000000LL, 0x0000000000000008LL);
+const unicode_block B_IPA_EXTENSIONS_BLOCK( /* 0250 - 02AF */ 0x0000000000000000LL, 0x0000000000000010LL);
+const unicode_block B_SPACING_MODIFIER_LETTERS_BLOCK( /* 02B0 - 02FF */ 0x0000000000000000LL, 0x0000000000000020LL);
+const unicode_block B_COMBINING_DIACRITICAL_MARKS_BLOCK( /* 0300 - 036F */ 0x0000000000000000LL, 0x0000000000000040LL);
+const unicode_block B_BASIC_GREEK_BLOCK( /* 0370 - 03CF */ 0x0000000000000000LL, 0x0000000000000080LL);
+const unicode_block B_GREEK_SYMBOLS_AND_COPTIC_BLOCK( /* 03D0 - 03FF */ 0x0000000000000000LL, 0x0000000000000100LL);
+const unicode_block B_CYRILLIC_BLOCK( /* 0400 - 04FF */ 0x0000000000000000LL, 0x0000000000000200LL);
+const unicode_block B_ARMENIAN_BLOCK( /* 0530 - 058F */ 0x0000000000000000LL, 0x0000000000000400LL);
+const unicode_block B_BASIC_HEBREW_BLOCK( /* 0590 - 05CF */ 0x0000000000000000LL, 0x0000000000000800LL);
+const unicode_block B_HEBREW_EXTENDED_BLOCK( /* 05D0 - 05FF */ 0x0000000000000000LL, 0x0000000000001000LL);
+const unicode_block B_BASIC_ARABIC_BLOCK( /* 0600 - 0670 */ 0x0000000000000000LL, 0x0000000000002000LL);
+const unicode_block B_ARABIC_EXTENDED_BLOCK( /* 0671 - 06FF */ 0x0000000000000000LL, 0x0000000000004000LL);
+const unicode_block B_DEVANAGARI_BLOCK( /* 0900 - 097F */ 0x0000000000000000LL, 0x0000000000008000LL);
+const unicode_block B_BENGALI_BLOCK( /* 0980 - 09FF */ 0x0000000000000000LL, 0x0000000000010000LL);
+const unicode_block B_GURMUKHI_BLOCK( /* 0A00 - 0A7F */ 0x0000000000000000LL, 0x0000000000020000LL);
+const unicode_block B_GUJARATI_BLOCK( /* 0A80 - 0AFF */ 0x0000000000000000LL, 0x0000000000040000LL);
+const unicode_block B_ORIYA_BLOCK( /* 0B00 - 0B7F */ 0x0000000000000000LL, 0x0000000000080000LL);
+const unicode_block B_TAMIL_BLOCK( /* 0B80 - 0BFF */ 0x0000000000000000LL, 0x0000000000100000LL);
+const unicode_block B_TELUGU_BLOCK( /* 0C00 - 0C7F */ 0x0000000000000000LL, 0x0000000000200000LL);
+const unicode_block B_KANNADA_BLOCK( /* 0C80 - 0CFF */ 0x0000000000000000LL, 0x0000000000400000LL);
+const unicode_block B_MALAYALAM_BLOCK( /* 0D00 - 0D7F */ 0x0000000000000000LL, 0x0000000000800000LL);
+const unicode_block B_THAI_BLOCK( /* 0E00 - 0E7F */ 0x0000000000000000LL, 0x0000000001000000LL);
+const unicode_block B_LAO_BLOCK( /* 0E80 - 0EFF */ 0x0000000000000000LL, 0x0000000002000000LL);
+const unicode_block B_BASIC_GEORGIAN_BLOCK( /* 10A0 - 10CF */ 0x0000000000000000LL, 0x0000000004000000LL);
+const unicode_block B_GEORGIAN_EXTENDED_BLOCK( /* 10D0 - 10FF */ 0x0000000000000000LL, 0x0000000008000000LL);
+const unicode_block B_HANGUL_JAMO_BLOCK( /* 1100 - 11FF */ 0x0000000000000000LL, 0x0000000010000000LL);
+const unicode_block B_LATIN_EXTENDED_ADDITIONAL_BLOCK( /* 1E00 - 1EFF */ 0x0000000000000000LL, 0x0000000020000000LL);
+const unicode_block B_GREEK_EXTENDED_BLOCK( /* 1F00 - 1FFF */ 0x0000000000000000LL, 0x0000000040000000LL);
+const unicode_block B_GENERAL_PUNCTUATION_BLOCK( /* 2000 - 206F */ 0x0000000000000000LL, 0x0000000080000000LL);
+const unicode_block B_SUPERSCRIPTS_AND_SUBSCRIPTS_BLOCK( /* 2070 - 209F */ 0x0000000000000000LL, 0x0000000100000000LL);
+const unicode_block B_CURRENCY_SYMBOLS_BLOCK( /* 20A0 - 20CF */ 0x0000000000000000LL, 0x0000000200000000LL);
+const unicode_block B_COMBINING_MARKS_FOR_SYMBOLS_BLOCK( /* 20D0 - 20FF */ 0x0000000000000000LL, 0x0000000400000000LL);
+const unicode_block B_LETTERLIKE_SYMBOLS_BLOCK( /* 2100 - 214F */ 0x0000000000000000LL, 0x0000000800000000LL);
+const unicode_block B_NUMBER_FORMS_BLOCK( /* 2150 - 218F */ 0x0000000000000000LL, 0x0000001000000000LL);
+const unicode_block B_ARROWS_BLOCK( /* 2190 - 21FF */ 0x0000000000000000LL, 0x0000002000000000LL);
+const unicode_block B_MATHEMATICAL_OPERATORS_BLOCK( /* 2200 - 22FF */ 0x0000000000000000LL, 0x0000004000000000LL);
+const unicode_block B_MISCELLANEOUS_TECHNICAL_BLOCK( /* 2300 - 23FF */ 0x0000000000000000LL, 0x0000008000000000LL);
+const unicode_block B_CONTROL_PICTURES_BLOCK( /* 2400 - 243F */ 0x0000000000000000LL, 0x0000010000000000LL);
+const unicode_block B_OPTICAL_CHARACTER_RECOGNITION_BLOCK( /* 2440 - 245F */ 0x0000000000000000LL, 0x0000020000000000LL);
+const unicode_block B_ENCLOSED_ALPHANUMERICS_BLOCK( /* 2460 - 24FF */ 0x0000000000000000LL, 0x0000040000000000LL);
+const unicode_block B_BOX_DRAWING_BLOCK( /* 2500 - 257F */ 0x0000000000000000LL, 0x0000080000000000LL);
+const unicode_block B_BLOCK_ELEMENTS_BLOCK( /* 2580 - 259F */ 0x0000000000000000LL, 0x0000100000000000LL);
+const unicode_block B_GEOMETRIC_SHAPES_BLOCK( /* 25A0 - 25FF */ 0x0000000000000000LL, 0x0000200000000000LL);
+const unicode_block B_MISCELLANEOUS_SYMBOLS_BLOCK( /* 2600 - 26FF */ 0x0000000000000000LL, 0x0000400000000000LL);
+const unicode_block B_DINGBATS_BLOCK( /* 2700 - 27BF */ 0x0000000000000000LL, 0x0000800000000000LL);
+const unicode_block B_CJK_SYMBOLS_AND_PUNCTUATION_BLOCK( /* 3000 - 303F */ 0x0000000000000000LL, 0x0001000000000000LL);
+const unicode_block B_HIRAGANA_BLOCK( /* 3040 - 309F */ 0x0000000000000000LL, 0x0002000000000000LL);
+const unicode_block B_KATAKANA_BLOCK( /* 30A0 - 30FF */ 0x0000000000000000LL, 0x0004000000000000LL);
+const unicode_block B_BOPOMOFO_BLOCK( /* 3100 - 312F */ 0x0000000000000000LL, 0x0008000000000000LL);
+const unicode_block B_HANGUL_COMPATIBILITY_JAMO_BLOCK( /* 3130 - 318F */ 0x0000000000000000LL, 0x0010000000000000LL);
+const unicode_block B_CJK_MISCELLANEOUS_BLOCK( /* 3190 - 319F */ 0x0000000000000000LL, 0x0020000000000000LL);
+const unicode_block B_ENCLOSED_CJK_LETTERS_AND_MONTHS_BLOCK(/* 3200 - 32FF */ 0x0000000000000000LL, 0x0040000000000000LL);
+const unicode_block B_CJK_COMPATIBILITY_BLOCK( /* 3300 - 33FF */ 0x0000000000000000LL, 0x0080000000000000LL);
+const unicode_block B_HANGUL_BLOCK( /* AC00 - D7AF */ 0x0000000000000000LL, 0x0100000000000000LL);
+const unicode_block B_HIGH_SURROGATES_BLOCK( /* D800 - DBFF */ 0x0000000000000000LL, 0x0200000000000000LL);
+const unicode_block B_LOW_SURROGATES_BLOCK( /* DC00 - DFFF */ 0x0000000000000000LL, 0x0400000000000000LL);
+const unicode_block B_CJK_UNIFIED_IDEOGRAPHS_BLOCK( /* 4E00 - 9FFF */ 0x0000000000000000LL, 0x0800000000000000LL);
+const unicode_block B_PRIVATE_USE_AREA_BLOCK( /* E000 - F8FF */ 0x0000000000000000LL, 0x1000000000000000LL);
+const unicode_block B_CJK_COMPATIBILITY_IDEOGRAPHS_BLOCK( /* F900 - FAFF */ 0x0000000000000000LL, 0x2000000000000000LL);
+const unicode_block B_ALPHABETIC_PRESENTATION_FORMS_BLOCK( /* FB00 - FB4F */ 0x0000000000000000LL, 0x4000000000000000LL);
+const unicode_block B_ARABIC_PRESENTATION_FORMS_A_BLOCK( /* FB50 - FDFF */ 0x0000000000000000LL, 0x8000000000000000LL);
+const unicode_block B_COMBINING_HALF_MARKS_BLOCK( /* FE20 - FE2F */ 0x0000000000000001LL, 0x0000000000000000LL);
+const unicode_block B_CJK_COMPATIBILITY_FORMS_BLOCK( /* FE30 - FE4F */ 0x0000000000000002LL, 0x0000000000000000LL);
+const unicode_block B_SMALL_FORM_VARIANTS_BLOCK( /* FE50 - FE6F */ 0x0000000000000004LL, 0x0000000000000000LL);
+const unicode_block B_ARABIC_PRESENTATION_FORMS_B_BLOCK( /* FE70 - FEFE */ 0x0000000000000008LL, 0x0000000000000000LL);
+const unicode_block B_HALFWIDTH_AND_FULLWIDTH_FORMS_BLOCK( /* FF00 - FFEF */ 0x0000000000000010LL, 0x0000000000000000LL);
+const unicode_block B_SPECIALS_BLOCK( /* FEFF and FFF0 - FFFF */ 0x0000000000000020LL, 0x0000000000000000LL);
+const unicode_block B_TIBETAN_BLOCK( /* 0F00 - 0FBF */ 0x0000000000000040LL, 0x0000000000000000LL);
+
+#endif // _UNICODEBLOCKOBJECTS_H
+
+/*
+ * $Log $
+ *
+ * $Id $
+ *
+ */
+
diff --git a/headers/os/interface/View.h b/headers/os/interface/View.h
new file mode 100644
index 0000000000..ebb1b28f55
--- /dev/null
+++ b/headers/os/interface/View.h
@@ -0,0 +1,667 @@
+//------------------------------------------------------------------------------
+// Copyright (c) 2001-2002, OpenBeOS
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+//
+// File Name: View.h
+// Author: Erik Jaesler (erik@cgsoftware.com)
+// Description: BView is the base class for all views (clipped regions
+// within a window).
+//------------------------------------------------------------------------------
+
+#ifndef _VIEW_H
+#define _VIEW_H
+
+// Standard Includes -----------------------------------------------------------
+
+// System Includes -------------------------------------------------------------
+#include
+#include
+#include
+#include
+#include
+
+// Project Includes ------------------------------------------------------------
+
+// Local Includes --------------------------------------------------------------
+
+// Local Defines ---------------------------------------------------------------
+
+// Globals ---------------------------------------------------------------------
+
+
+// view definitions ------------------------------------------------------------
+
+enum {
+ B_PRIMARY_MOUSE_BUTTON = 0x01,
+ B_SECONDARY_MOUSE_BUTTON = 0x02,
+ B_TERTIARY_MOUSE_BUTTON = 0x04
+};
+
+enum {
+ B_ENTERED_VIEW = 0,
+ B_INSIDE_VIEW,
+ B_EXITED_VIEW,
+ B_OUTSIDE_VIEW
+};
+
+enum {
+ B_POINTER_EVENTS = 0x00000001,
+ B_KEYBOARD_EVENTS = 0x00000002
+};
+
+enum {
+ B_LOCK_WINDOW_FOCUS = 0x00000001,
+ B_SUSPEND_VIEW_FOCUS = 0x00000002,
+ B_NO_POINTER_HISTORY = 0x00000004
+};
+
+enum {
+ B_TRACK_WHOLE_RECT,
+ B_TRACK_RECT_CORNER
+};
+
+enum {
+ B_FONT_FAMILY_AND_STYLE = 0x00000001,
+ B_FONT_SIZE = 0x00000002,
+ B_FONT_SHEAR = 0x00000004,
+ B_FONT_ROTATION = 0x00000008,
+ B_FONT_SPACING = 0x00000010,
+ B_FONT_ENCODING = 0x00000020,
+ B_FONT_FACE = 0x00000040,
+ B_FONT_FLAGS = 0x00000080,
+ B_FONT_ALL = 0x000000FF
+};
+
+const uint32 B_FULL_UPDATE_ON_RESIZE = 0x80000000UL; /* 31 */
+const uint32 _B_RESERVED1_ = 0x40000000UL; /* 30 */
+const uint32 B_WILL_DRAW = 0x20000000UL; /* 29 */
+const uint32 B_PULSE_NEEDED = 0x10000000UL; /* 28 */
+const uint32 B_NAVIGABLE_JUMP = 0x08000000UL; /* 27 */
+const uint32 B_FRAME_EVENTS = 0x04000000UL; /* 26 */
+const uint32 B_NAVIGABLE = 0x02000000UL; /* 25 */
+const uint32 B_SUBPIXEL_PRECISE = 0x01000000UL; /* 24 */
+const uint32 B_DRAW_ON_CHILDREN = 0x00800000UL; /* 23 */
+const uint32 B_INPUT_METHOD_AWARE = 0x00400000UL; /* 23 */
+const uint32 _B_RESERVED7_ = 0x00200000UL; /* 22 */
+
+#define _RESIZE_MASK_ ~(B_FULL_UPDATE_ON_RESIZE|_B_RESERVED1_|B_WILL_DRAW|\
+ B_PULSE_NEEDED|B_NAVIGABLE_JUMP|B_FRAME_EVENTS|B_NAVIGABLE|\
+ B_SUBPIXEL_PRECISE|B_DRAW_ON_CHILDREN|B_INPUT_METHOD_AWARE|_B_RESERVED7_)
+
+const uint32 _VIEW_TOP_ = 1UL;
+const uint32 _VIEW_LEFT_ = 2UL;
+const uint32 _VIEW_BOTTOM_ = 3UL;
+const uint32 _VIEW_RIGHT_ = 4UL;
+const uint32 _VIEW_CENTER_ = 5UL;
+
+inline uint32 _rule_(uint32 r1, uint32 r2, uint32 r3, uint32 r4)
+ { return ((r1 << 12) | (r2 << 8) | (r3 << 4) | r4); }
+
+#define B_FOLLOW_NONE 0
+#define B_FOLLOW_ALL_SIDES _rule_(_VIEW_TOP_, _VIEW_LEFT_, _VIEW_BOTTOM_,\
+ _VIEW_RIGHT_)
+#define B_FOLLOW_ALL B_FOLLOW_ALL_SIDES
+
+#define B_FOLLOW_LEFT _rule_(0, _VIEW_LEFT_, 0, _VIEW_LEFT_)
+#define B_FOLLOW_RIGHT _rule_(0, _VIEW_RIGHT_, 0, _VIEW_RIGHT_)
+#define B_FOLLOW_LEFT_RIGHT _rule_(0, _VIEW_LEFT_, 0, _VIEW_RIGHT_)
+#define B_FOLLOW_H_CENTER _rule_(0, _VIEW_CENTER_, 0, _VIEW_CENTER_)
+
+#define B_FOLLOW_TOP _rule_(_VIEW_TOP_, 0, _VIEW_TOP_, 0)
+#define B_FOLLOW_BOTTOM _rule_(_VIEW_BOTTOM_, 0, _VIEW_BOTTOM_, 0)
+#define B_FOLLOW_TOP_BOTTOM _rule_(_VIEW_TOP_, 0, _VIEW_BOTTOM_, 0)
+#define B_FOLLOW_V_CENTER _rule_(_VIEW_CENTER_, 0, _VIEW_CENTER_, 0)
+
+class BBitmap;
+class BCursor;
+class BMessage;
+class BPicture;
+class BPolygon;
+class BRegion;
+class BScrollBar;
+class BScrollView;
+class BShape;
+class BShelf;
+class BString;
+class BWindow;
+struct _view_attr_;
+struct _array_data_;
+struct _array_hdr_;
+struct overlay_restrictions;
+
+// BView class -----------------------------------------------------------------
+class BView : public BHandler {
+
+public:
+ BView(BRect frame, const char* name,
+ uint32 resizeMask, uint32 flags);
+ virtual ~BView();
+
+ BView(BMessage* data);
+ static BArchivable* Instantiate(BMessage* data);
+ virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+ virtual void AttachedToWindow();
+ virtual void AllAttached();
+ virtual void DetachedFromWindow();
+ virtual void AllDetached();
+
+ virtual void MessageReceived(BMessage* msg);
+
+ void AddChild(BView* child, BView* before = NULL);
+ bool RemoveChild(BView* child);
+ int32 CountChildren() const;
+ BView* ChildAt(int32 index) const;
+ BView* NextSibling() const;
+ BView* PreviousSibling() const;
+ bool RemoveSelf();
+
+ BWindow *Window() const;
+
+ virtual void Draw(BRect updateRect);
+ virtual void MouseDown(BPoint where);
+ virtual void MouseUp(BPoint where);
+ virtual void MouseMoved(BPoint where,
+ uint32 code,
+ const BMessage* a_message);
+ virtual void WindowActivated(bool state);
+ virtual void KeyDown(const char* bytes, int32 numBytes);
+ virtual void KeyUp(const char* bytes, int32 numBytes);
+ virtual void Pulse();
+ virtual void FrameMoved(BPoint new_position);
+ virtual void FrameResized(float new_width, float new_height);
+
+ virtual void TargetedByScrollView(BScrollView* scroll_view);
+ void BeginRectTracking(BRect startRect,
+ uint32 style = B_TRACK_WHOLE_RECT);
+ void EndRectTracking();
+
+ void GetMouse(BPoint* location,
+ uint32* buttons,
+ bool checkMessageQueue = true);
+
+ void DragMessage(BMessage* aMessage,
+ BRect dragRect,
+ BHandler* reply_to = NULL);
+ void DragMessage(BMessage* aMessage,
+ BBitmap* anImage,
+ BPoint offset,
+ BHandler* reply_to = NULL);
+ void DragMessage(BMessage* aMessage,
+ BBitmap* anImage,
+ drawing_mode dragMode,
+ BPoint offset,
+ BHandler* reply_to = NULL);
+
+ BView* FindView(const char* name) const;
+ BView* Parent() const;
+ BRect Bounds() const;
+ BRect Frame() const;
+ void ConvertToScreen(BPoint* pt) const;
+ BPoint ConvertToScreen(BPoint pt) const;
+ void ConvertFromScreen(BPoint* pt) const;
+ BPoint ConvertFromScreen(BPoint pt) const;
+ void ConvertToScreen(BRect* r) const;
+ BRect ConvertToScreen(BRect r) const;
+ void ConvertFromScreen(BRect* r) const;
+ BRect ConvertFromScreen(BRect r) const;
+ void ConvertToParent(BPoint* pt) const;
+ BPoint ConvertToParent(BPoint pt) const;
+ void ConvertFromParent(BPoint* pt) const;
+ BPoint ConvertFromParent(BPoint pt) const;
+ void ConvertToParent(BRect* r) const;
+ BRect ConvertToParent(BRect r) const;
+ void ConvertFromParent(BRect* r) const;
+ BRect ConvertFromParent(BRect r) const;
+ BPoint LeftTop() const;
+
+ void GetClippingRegion(BRegion* region) const;
+ virtual void ConstrainClippingRegion(BRegion* region);
+ void ClipToPicture(BPicture* picture,
+ BPoint where = B_ORIGIN,
+ bool sync = true);
+ void ClipToInversePicture(BPicture* picture,
+ BPoint where = B_ORIGIN,
+ bool sync = true);
+
+ virtual void SetDrawingMode(drawing_mode mode);
+ drawing_mode DrawingMode() const;
+
+ void SetBlendingMode(source_alpha srcAlpha,
+ alpha_function alphaFunc);
+ void GetBlendingMode(source_alpha* srcAlpha,
+ alpha_function* alphaFunc) const;
+
+ virtual void SetPenSize(float size);
+ float PenSize() const;
+
+ void SetViewCursor(const BCursor* cursor, bool sync=true);
+
+ virtual void SetViewColor(rgb_color c);
+ void SetViewColor(uchar r, uchar g, uchar b, uchar a = 255);
+ rgb_color ViewColor() const;
+
+ void SetViewBitmap(const BBitmap* bitmap,
+ BRect srcRect, BRect dstRect,
+ uint32 followFlags = B_FOLLOW_TOP|B_FOLLOW_LEFT,
+ uint32 options = B_TILE_BITMAP);
+ void SetViewBitmap(const BBitmap* bitmap,
+ uint32 followFlags = B_FOLLOW_TOP|B_FOLLOW_LEFT,
+ uint32 options = B_TILE_BITMAP);
+ void ClearViewBitmap();
+
+ status_t SetViewOverlay(const BBitmap* overlay,
+ BRect srcRect, BRect dstRect,
+ rgb_color* colorKey,
+ uint32 followFlags = B_FOLLOW_TOP|B_FOLLOW_LEFT,
+ uint32 options = 0);
+ status_t SetViewOverlay(const BBitmap* overlay, rgb_color* colorKey,
+ uint32 followFlags = B_FOLLOW_TOP|B_FOLLOW_LEFT,
+ uint32 options = 0);
+ void ClearViewOverlay();
+
+ virtual void SetHighColor(rgb_color a_color);
+ void SetHighColor(uchar r, uchar g, uchar b, uchar a = 255);
+ rgb_color HighColor() const;
+
+ virtual void SetLowColor(rgb_color a_color);
+ void SetLowColor(uchar r, uchar g, uchar b, uchar a = 255);
+ rgb_color LowColor() const;
+
+ void SetLineMode(cap_mode lineCap,
+ join_mode lineJoin,
+ float miterLimit = B_DEFAULT_MITER_LIMIT);
+ join_mode LineJoinMode() const;
+ cap_mode LineCapMode() const;
+ float LineMiterLimit() const;
+
+ void SetOrigin(BPoint pt);
+ void SetOrigin(float x, float y);
+ BPoint Origin() const;
+
+ void PushState();
+ void PopState();
+
+ void MovePenTo(BPoint pt);
+ void MovePenTo(float x, float y);
+ void MovePenBy(float x, float y);
+ BPoint PenLocation() const;
+ void StrokeLine(BPoint toPt,
+ pattern p = B_SOLID_HIGH);
+ void StrokeLine(BPoint pt0,
+ BPoint pt1,
+ pattern p = B_SOLID_HIGH);
+ void BeginLineArray(int32 count);
+ void AddLine(BPoint pt0, BPoint pt1, rgb_color col);
+ void EndLineArray();
+
+ void StrokePolygon(const BPolygon* aPolygon,
+ bool closed = true,
+ pattern p = B_SOLID_HIGH);
+ void StrokePolygon(const BPoint* ptArray,
+ int32 numPts,
+ bool closed = true,
+ pattern p = B_SOLID_HIGH);
+ void StrokePolygon(const BPoint* ptArray,
+ int32 numPts,
+ BRect bounds,
+ bool closed = true,
+ pattern p = B_SOLID_HIGH);
+ void FillPolygon(const BPolygon* aPolygon,
+ pattern p = B_SOLID_HIGH);
+ void FillPolygon(const BPoint* ptArray,
+ int32 numPts,
+ pattern p = B_SOLID_HIGH);
+ void FillPolygon(const BPoint* ptArray,
+ int32 numPts,
+ BRect bounds,
+ pattern p = B_SOLID_HIGH);
+
+ void StrokeTriangle(BPoint pt1,
+ BPoint pt2,
+ BPoint pt3,
+ BRect bounds,
+ pattern p = B_SOLID_HIGH);
+ void StrokeTriangle(BPoint pt1,
+ BPoint pt2,
+ BPoint pt3,
+ pattern p = B_SOLID_HIGH);
+ void FillTriangle(BPoint pt1,
+ BPoint pt2,
+ BPoint pt3,
+ pattern p = B_SOLID_HIGH);
+ void FillTriangle(BPoint pt1,
+ BPoint pt2,
+ BPoint pt3,
+ BRect bounds,
+ pattern p = B_SOLID_HIGH);
+
+ void StrokeRect(BRect r, pattern p = B_SOLID_HIGH);
+ void FillRect(BRect r, pattern p = B_SOLID_HIGH);
+ void FillRegion(BRegion* a_region, pattern p= B_SOLID_HIGH);
+ void InvertRect(BRect r);
+
+ void StrokeRoundRect(BRect r,
+ float xRadius,
+ float yRadius,
+ pattern p = B_SOLID_HIGH);
+ void FillRoundRect(BRect r,
+ float xRadius,
+ float yRadius,
+ pattern p = B_SOLID_HIGH);
+
+ void StrokeEllipse(BPoint center,
+ float xRadius,
+ float yRadius,
+ pattern p = B_SOLID_HIGH);
+ void StrokeEllipse(BRect r, pattern p = B_SOLID_HIGH);
+ void FillEllipse(BPoint center,
+ float xRadius,
+ float yRadius,
+ pattern p = B_SOLID_HIGH);
+ void FillEllipse(BRect r, pattern p = B_SOLID_HIGH);
+
+ void StrokeArc(BPoint center,
+ float xRadius,
+ float yRadius,
+ float start_angle,
+ float arc_angle,
+ pattern p = B_SOLID_HIGH);
+ void StrokeArc(BRect r,
+ float start_angle,
+ float arc_angle,
+ pattern p = B_SOLID_HIGH);
+ void FillArc(BPoint center,
+ float xRadius,
+ float yRadius,
+ float start_angle,
+ float arc_angle,
+ pattern p = B_SOLID_HIGH);
+ void FillArc(BRect r,
+ float start_angle,
+ float arc_angle,
+ pattern p = B_SOLID_HIGH);
+
+ void StrokeBezier(BPoint* controlPoints,
+ pattern p = B_SOLID_HIGH);
+ void FillBezier(BPoint* controlPoints,
+ pattern p = B_SOLID_HIGH);
+
+ void StrokeShape(BShape* shape,
+ pattern p = B_SOLID_HIGH);
+ void FillShape(BShape* shape,
+ pattern p = B_SOLID_HIGH);
+
+ void CopyBits(BRect src, BRect dst);
+ void DrawBitmapAsync(const BBitmap* aBitmap,
+ BRect srcRect,
+ BRect dstRect);
+ void DrawBitmapAsync(const BBitmap* aBitmap);
+ void DrawBitmapAsync(const BBitmap* aBitmap, BPoint where);
+ void DrawBitmapAsync(const BBitmap* aBitmap, BRect dstRect);
+ void DrawBitmap(const BBitmap* aBitmap,
+ BRect srcRect,
+ BRect dstRect);
+ void DrawBitmap(const BBitmap* aBitmap);
+ void DrawBitmap(const BBitmap* aBitmap, BPoint where);
+ void DrawBitmap(const BBitmap* aBitmap, BRect dstRect);
+
+ void DrawChar(char aChar);
+ void DrawChar(char aChar, BPoint location);
+ void DrawString(const char* aString,
+ escapement_delta* delta = NULL);
+ void DrawString(const char* aString, BPoint location,
+ escapement_delta* delta = NULL);
+ void DrawString(const char* aString, int32 length,
+ escapement_delta* delta = NULL);
+ void DrawString(const char* aString,
+ int32 length,
+ BPoint location,
+ escapement_delta* delta = 0L);
+
+ virtual void SetFont(const BFont* font, uint32 mask = B_FONT_ALL);
+
+ #if !_PR3_COMPATIBLE_
+ void GetFont(BFont* font) const;
+ #else
+ void GetFont(BFont* font);
+ #endif
+ void TruncateString(BString* in_out,
+ uint32 mode,
+ float width) const;
+ float StringWidth(const char* string) const;
+ float StringWidth(const char* string, int32 length) const;
+ void GetStringWidths(char* stringArray[],
+ int32 lengthArray[],
+ int32 numStrings,
+ float widthArray[]) const;
+ void SetFontSize(float size);
+ void ForceFontAliasing(bool enable);
+ void GetFontHeight(font_height* height) const;
+
+ void Invalidate(BRect invalRect);
+ void Invalidate(const BRegion* invalRegion);
+ void Invalidate();
+
+ void SetDiskMode(char* filename, long offset);
+
+ void BeginPicture(BPicture* a_picture);
+ void AppendToPicture(BPicture* a_picture);
+ BPicture* EndPicture();
+
+ void DrawPicture(const BPicture* a_picture);
+ void DrawPicture(const BPicture* a_picture, BPoint where);
+ void DrawPicture(const char* filename, long offset, BPoint where);
+ void DrawPictureAsync(const BPicture* a_picture);
+ void DrawPictureAsync(const BPicture* a_picture, BPoint where);
+ void DrawPictureAsync(const char* filename, long offset,
+ BPoint where);
+
+ status_t SetEventMask(uint32 mask, uint32 options=0);
+ uint32 EventMask();
+ status_t SetMouseEventMask(uint32 mask, uint32 options=0);
+
+ virtual void SetFlags(uint32 flags);
+ uint32 Flags() const;
+ virtual void SetResizingMode(uint32 mode);
+ uint32 ResizingMode() const;
+ void MoveBy(float dh, float dv);
+ void MoveTo(BPoint where);
+ void MoveTo(float x, float y);
+ void ResizeBy(float dh, float dv);
+ void ResizeTo(float width, float height);
+ void ScrollBy(float dh, float dv);
+ void ScrollTo(float x, float y);
+ virtual void ScrollTo(BPoint where);
+ virtual void MakeFocus(bool focusState = true);
+ bool IsFocus() const;
+
+ virtual void Show();
+ virtual void Hide();
+ bool IsHidden() const;
+ bool IsHidden(const BView* looking_from) const;
+
+ void Flush() const;
+ void Sync() const;
+
+ virtual void GetPreferredSize(float* width, float* height);
+ virtual void ResizeToPreferred();
+
+ BScrollBar* ScrollBar(orientation posture) const;
+
+ virtual BHandler* ResolveSpecifier(BMessage* msg,
+ int32 index,
+ BMessage* specifier,
+ int32 form,
+ const char* property);
+ virtual status_t GetSupportedSuites(BMessage* data);
+
+ bool IsPrinting() const;
+ void SetScale(float scale) const;
+
+// Private or reserved ---------------------------------------------------------
+ virtual status_t Perform(perform_code d, void* arg);
+
+ virtual void DrawAfterChildren(BRect r);
+
+private:
+
+ friend class BScrollBar;
+ friend class BWindow;
+ friend class BBitmap;
+ friend class BPrintJob;
+ friend class BShelf;
+ friend class BTabView;
+
+ virtual void _ReservedView2();
+ virtual void _ReservedView3();
+ virtual void _ReservedView4();
+ virtual void _ReservedView5();
+ virtual void _ReservedView6();
+ virtual void _ReservedView7();
+ virtual void _ReservedView8();
+
+#if !_PR3_COMPATIBLE_
+ virtual void _ReservedView9();
+ virtual void _ReservedView10();
+ virtual void _ReservedView11();
+ virtual void _ReservedView12();
+ virtual void _ReservedView13();
+ virtual void _ReservedView14();
+ virtual void _ReservedView15();
+ virtual void _ReservedView16();
+#endif
+
+ BView(const BView&);
+ BView& operator=(const BView&);
+
+ void InitData(BRect f, const char* name, uint32 rs, uint32 fl);
+ status_t ArchiveChildren(BMessage* data, bool deep) const;
+ status_t UnarchiveChildren(BMessage* data, BWindow* w = NULL);
+ status_t SetViewImage(const BBitmap* bitmap,BRect srcRect, BRect dstRect,
+ uint32 followFlags, uint32 options);
+ void BeginPicture_pr(BPicture* a_picture, BRect r);
+ void SetPattern(pattern pat);
+ void DoBezier(int32 gr, BPoint* controlPoints, pattern p);
+ void DoShape(int32 gr, BShape* shape, pattern p);
+ void DoPictureClip(BPicture* picture, BPoint where, bool invert,
+ bool sync);
+ bool remove_from_list(BView* a_view);
+ bool remove_self();
+ bool do_owner_check() const;
+ void set_owner(BWindow* the_owner);
+ void do_activate(int32 state);
+ void check_lock() const;
+ void check_lock_no_pick() const;
+ void movesize(uint32 code, int32 h, int32 v);
+ void handle_tick();
+ char *test_area(int32 length);
+ void remove_comm_array();
+ _array_hdr_ *new_comm_array(int32 cnt);
+ BView *RealParent() const;
+ void SetScroller(BScrollBar* sb);
+ void UnsetScroller(BScrollBar* sb);
+ void RealScrollTo(BPoint);
+ void init_cache();
+ void set_cached_state();
+ void update_cached_state();
+ void set_font_state(const BFont* font, uint32 mask);
+ void fetch_font();
+ uchar font_encoding() const;
+ BShelf* shelf() const;
+ void set_shelf(BShelf* );
+
+ int32 server_token;
+ uint32 f_type;
+ float origin_h;
+ float origin_v;
+ BWindow* owner;
+ BView* parent;
+ BView* next_sibling;
+ BView* prev_sibling;
+ BView* first_child;
+
+ int16 fShowLevel;
+ bool top_level_view;
+ bool fNoISInteraction;
+ BPicture* cpicture;
+ _array_data_* comm;
+
+ BScrollBar* fVerScroller;
+ BScrollBar* fHorScroller;
+ bool f_is_printing;
+ bool attached;
+ bool _unused_bool1;
+ bool _unused_bool2;
+ _view_attr_* fPermanentState;
+ _view_attr_* fState;
+ BRect fCachedBounds;
+ BShelf* fShelf;
+ void* pr_state;
+ uint32 fEventMask;
+ uint32 fEventOptions;
+ uint32 _reserved[4];
+#if !_PR3_COMPATIBLE_
+ uint32 _more_reserved[3];
+#endif
+};
+//------------------------------------------------------------------------------
+
+
+// inline definitions ----------------------------------------------------------
+inline void BView::ScrollTo(float x, float y)
+{
+ ScrollTo(BPoint(x, y));
+}
+//------------------------------------------------------------------------------
+inline void BView::SetViewColor(uchar r, uchar g, uchar b, uchar a)
+{
+ rgb_color a_color;
+ a_color.red = r; a_color.green = g;
+ a_color.blue = b; a_color.alpha = a;
+ SetViewColor(a_color);
+}
+//------------------------------------------------------------------------------
+inline void BView::SetHighColor(uchar r, uchar g, uchar b, uchar a)
+{
+ rgb_color a_color;
+ a_color.red = r; a_color.green = g;
+ a_color.blue = b; a_color.alpha = a;
+ SetHighColor(a_color);
+}
+//------------------------------------------------------------------------------
+inline void BView::SetLowColor(uchar r, uchar g, uchar b, uchar a)
+{
+ rgb_color a_color;
+ a_color.red = r; a_color.green = g;
+ a_color.blue = b; a_color.alpha = a;
+ SetLowColor(a_color);
+}
+//------------------------------------------------------------------------------
+
+#endif // _VIEW_H
+
+/*
+ * $Log $
+ *
+ * $Id $
+ *
+ */
+
diff --git a/headers/os/interface/Window.h b/headers/os/interface/Window.h
new file mode 100644
index 0000000000..e1c0cc6ef4
--- /dev/null
+++ b/headers/os/interface/Window.h
@@ -0,0 +1,456 @@
+//------------------------------------------------------------------------------
+// Copyright (c) 2001-2002, OpenBeOS
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+//
+// File Name: Window.h
+// Author: Erik Jaesler (erik@cgsoftware.com)
+// Description: BWindow is the base class for all windows (graphic areas
+// displayed on-screen).
+//------------------------------------------------------------------------------
+
+#ifndef _WINDOW_H
+#define _WINDOW_H
+
+// Standard Includes -----------------------------------------------------------
+
+// System Includes -------------------------------------------------------------
+#include
+#include
+#include
+#include
+#include
+#include
+
+// Project Includes ------------------------------------------------------------
+
+// Local Includes --------------------------------------------------------------
+
+// Local Defines ---------------------------------------------------------------
+
+// Globals ---------------------------------------------------------------------
+
+
+// window definitions ----------------------------------------------------------
+
+enum window_type {
+ B_UNTYPED_WINDOW = 0,
+ B_TITLED_WINDOW = 1,
+ B_MODAL_WINDOW = 3,
+ B_DOCUMENT_WINDOW = 11,
+ B_BORDERED_WINDOW = 20,
+ B_FLOATING_WINDOW = 21
+};
+
+//----------------------------------------------------------------
+
+enum window_look {
+ B_BORDERED_WINDOW_LOOK = 20,
+ B_NO_BORDER_WINDOW_LOOK = 19,
+ B_TITLED_WINDOW_LOOK = 1,
+ B_DOCUMENT_WINDOW_LOOK = 11,
+ B_MODAL_WINDOW_LOOK = 3,
+ B_FLOATING_WINDOW_LOOK = 7
+};
+
+//----------------------------------------------------------------
+
+enum window_feel {
+ B_NORMAL_WINDOW_FEEL = 0,
+ B_MODAL_SUBSET_WINDOW_FEEL = 2,
+ B_MODAL_APP_WINDOW_FEEL = 1,
+ B_MODAL_ALL_WINDOW_FEEL = 3,
+ B_FLOATING_SUBSET_WINDOW_FEEL = 5,
+ B_FLOATING_APP_WINDOW_FEEL = 4,
+ B_FLOATING_ALL_WINDOW_FEEL = 6
+};
+
+//----------------------------------------------------------------
+
+enum window_alignment {
+ B_BYTE_ALIGNMENT = 0,
+ B_PIXEL_ALIGNMENT = 1
+};
+
+//----------------------------------------------------------------
+
+enum {
+ B_NOT_MOVABLE = 0x00000001,
+ B_NOT_CLOSABLE = 0x00000020,
+ B_NOT_ZOOMABLE = 0x00000040,
+ B_NOT_MINIMIZABLE = 0x00004000,
+ B_NOT_RESIZABLE = 0x00000002,
+ B_NOT_H_RESIZABLE = 0x00000004,
+ B_NOT_V_RESIZABLE = 0x00000008,
+ B_AVOID_FRONT = 0x00000080,
+ B_AVOID_FOCUS = 0x00002000,
+ B_WILL_ACCEPT_FIRST_CLICK = 0x00000010,
+ B_OUTLINE_RESIZE = 0x00001000,
+ B_NO_WORKSPACE_ACTIVATION = 0x00000100,
+ B_NOT_ANCHORED_ON_ACTIVATE = 0x00020000,
+ B_ASYNCHRONOUS_CONTROLS = 0x00080000,
+ B_QUIT_ON_WINDOW_CLOSE = 0x00100000
+};
+
+#define B_CURRENT_WORKSPACE 0
+#define B_ALL_WORKSPACES 0xffffffff
+
+//----------------------------------------------------------------
+
+class _BSession_;
+class BButton;
+class BMenuBar;
+class BMenuItem;
+class BMessage;
+class BMessageRunner;
+class BMessenger;
+class BView;
+
+struct message;
+struct _cmd_key_;
+struct _view_attr_;
+
+// BWindow class ---------------------------------------------------------------
+class BWindow : public BLooper {
+
+public:
+ BWindow(BRect frame,
+ const char* title,
+ window_type type,
+ uint32 flags,
+ uint32 workspace = B_CURRENT_WORKSPACE);
+ BWindow(BRect frame,
+ const char* title,
+ window_look look,
+ window_feel feel,
+ uint32 flags,
+ uint32 workspace = B_CURRENT_WORKSPACE);
+virtual ~BWindow();
+
+ BWindow(BMessage* data);
+static BArchivable *Instantiate(BMessage* data);
+virtual status_t Archive(BMessage* data, bool deep = true) const;
+
+virtual void Quit();
+ void Close(); // Synonym of Quit()
+
+ void AddChild(BView* child, BView* before = NULL);
+ bool RemoveChild(BView* child);
+ int32 CountChildren() const;
+ BView *ChildAt(int32 index) const;
+
+virtual void DispatchMessage(BMessage* message, BHandler* handler);
+virtual void MessageReceived(BMessage* message);
+virtual void FrameMoved(BPoint new_position);
+virtual void WorkspacesChanged(uint32 old_ws, uint32 new_ws);
+virtual void WorkspaceActivated(int32 ws, bool state);
+virtual void FrameResized(float new_width, float new_height);
+virtual void Minimize(bool minimize);
+virtual void Zoom( BPoint rec_position,
+ float rec_width,
+ float rec_height);
+ void Zoom();
+ void SetZoomLimits(float max_h, float max_v);
+virtual void ScreenChanged(BRect screen_size, color_space depth);
+ void SetPulseRate(bigtime_t rate);
+ bigtime_t PulseRate() const;
+ void AddShortcut( uint32 key,
+ uint32 modifiers,
+ BMessage* msg);
+ void AddShortcut( uint32 key,
+ uint32 modifiers,
+ BMessage* msg,
+ BHandler* target);
+ void RemoveShortcut(uint32 key, uint32 modifiers);
+ void SetDefaultButton(BButton* button);
+ BButton *DefaultButton() const;
+virtual void MenusBeginning();
+virtual void MenusEnded();
+ bool NeedsUpdate() const;
+ void UpdateIfNeeded();
+ BView *FindView(const char* view_name) const;
+ BView *FindView(BPoint) const;
+ BView *CurrentFocus() const;
+ void Activate(bool = true);
+virtual void WindowActivated(bool state);
+ void ConvertToScreen(BPoint* pt) const;
+ BPoint ConvertToScreen(BPoint pt) const;
+ void ConvertFromScreen(BPoint* pt) const;
+ BPoint ConvertFromScreen(BPoint pt) const;
+ void ConvertToScreen(BRect* rect) const;
+ BRect ConvertToScreen(BRect rect) const;
+ void ConvertFromScreen(BRect* rect) const;
+ BRect ConvertFromScreen(BRect rect) const;
+ void MoveBy(float dx, float dy);
+ void MoveTo(BPoint);
+ void MoveTo(float x, float y);
+ void ResizeBy(float dx, float dy);
+ void ResizeTo(float width, float height);
+virtual void Show();
+virtual void Hide();
+ bool IsHidden() const;
+ bool IsMinimized() const;
+
+ void Flush() const;
+ void Sync() const;
+
+ status_t SendBehind(const BWindow* window);
+
+ void DisableUpdates();
+ void EnableUpdates();
+
+ void BeginViewTransaction();
+ void EndViewTransaction();
+
+ BRect Bounds() const;
+ BRect Frame() const;
+ const char *Title() const;
+ void SetTitle(const char* title);
+ bool IsFront() const;
+ bool IsActive() const;
+ void SetKeyMenuBar(BMenuBar* bar);
+ BMenuBar *KeyMenuBar() const;
+ void SetSizeLimits( float min_h,
+ float max_h,
+ float min_v,
+ float max_v);
+ void GetSizeLimits( float* min_h,
+ float* max_h,
+ float* min_v,
+ float* max_v);
+ uint32 Workspaces() const;
+ void SetWorkspaces(uint32);
+ BView *LastMouseMovedView() const;
+
+virtual BHandler *ResolveSpecifier(BMessage* msg,
+ int32 index,
+ BMessage* specifier,
+ int32 form,
+ const char* property);
+virtual status_t GetSupportedSuites(BMessage* data);
+
+ status_t AddToSubset(BWindow* window);
+ status_t RemoveFromSubset(BWindow* window);
+
+virtual status_t Perform(perform_code d, void* arg);
+
+ status_t SetType(window_type type);
+ window_type Type() const;
+
+ status_t SetLook(window_look look);
+ window_look Look() const;
+
+ status_t SetFeel(window_feel feel);
+ window_feel Feel() const;
+
+ status_t SetFlags(uint32);
+ uint32 Flags() const;
+
+ bool IsModal() const;
+ bool IsFloating() const;
+
+ status_t SetWindowAlignment(window_alignment mode,
+ int32 h,
+ int32 hOffset = 0,
+ int32 width = 0,
+ int32 widthOffset = 0,
+ int32 v = 0,
+ int32 vOffset = 0,
+ int32 height = 0,
+ int32 heightOffset = 0);
+ status_t GetWindowAlignment(window_alignment* mode = NULL,
+ int32* h = NULL,
+ int32* hOffset = NULL,
+ int32* width = NULL,
+ int32* widthOffset = NULL,
+ int32* v = NULL,
+ int32* vOffset = NULL,
+ int32* height = NULL,
+ int32* heightOffset = NULL) const;
+
+virtual bool QuitRequested();
+virtual thread_id Run();
+
+// Private or reserved ---------------------------------------------------------
+private:
+
+typedef BLooper inherited;
+
+friend class BApplication;
+friend class BBitmap;
+friend class BScrollBar;
+friend class BView;
+friend class BMenuItem;
+friend class BWindowScreen;
+friend class BDirectWindow;
+friend class BFilePanel;
+friend class _CEventPort_;
+friend void _set_menu_sem_(BWindow* w, sem_id sem);
+friend status_t _safe_get_server_token_(const BLooper* , int32* );
+
+virtual void _ReservedWindow1();
+virtual void _ReservedWindow2();
+virtual void _ReservedWindow3();
+virtual void _ReservedWindow4();
+virtual void _ReservedWindow5();
+virtual void _ReservedWindow6();
+virtual void _ReservedWindow7();
+virtual void _ReservedWindow8();
+
+ BWindow();
+ BWindow(BWindow&);
+ BWindow &operator=(BWindow&);
+
+ BWindow(BRect frame, color_space depth,
+ uint32 bitmapFlags, int32 rowBytes);
+ void InitData(BRect frame,
+ const char* title,
+ window_look look,
+ window_feel feel,
+ uint32 flags,
+ uint32 workspace);
+ status_t ArchiveChildren(BMessage* data, bool deep) const;
+ status_t UnarchiveChildren(BMessage* data);
+ void BitmapClose();
+virtual void task_looper();
+ void start_drag( BMessage* msg,
+ int32 token,
+ BPoint offset,
+ BRect track_rect,
+ BHandler* reply_to);
+ void start_drag( BMessage* msg,
+ int32 token,
+ BPoint offset,
+ int32 bitmap_token,
+ drawing_mode dragMode,
+ BHandler* reply_to);
+ void view_builder(BView* a_view);
+ void attach_builder(BView* a_view);
+ void detach_builder(BView* a_view);
+ int32 get_server_token() const;
+ BMessage *extract_drop(BMessage* an_event, BHandler* *target);
+ void movesize(uint32 opcode, float h, float v);
+
+ BMessage* ReadMessageFromPort(bigtime_t tout = B_INFINITE_TIMEOUT);
+ int32 MessagesWaiting();
+
+ void handle_activate(BMessage* an_event);
+ void do_view_frame(BMessage* an_event);
+ void do_value_change(BMessage* an_event, BHandler* handler);
+ void do_mouse_down(BMessage* an_event, BView* target);
+ void do_mouse_moved(BMessage* an_event, BView* target);
+ void do_key_down(BMessage* an_event, BHandler* handler);
+ void do_key_up(BMessage* an_event, BHandler* handler);
+ void do_menu_event(BMessage* an_event);
+ void do_draw_views();
+virtual BMessage *ConvertToMessage(void* raw, int32 code);
+ _cmd_key_ *allocShortcut(uint32 key, uint32 modifiers);
+ _cmd_key_ *FindShortcut(uint32 key, uint32 modifiers);
+ void AddShortcut(uint32 key,
+ uint32 modifiers,
+ BMenuItem* item);
+ void post_message(BMessage* message);
+ void SetLocalTitle(const char* new_title);
+ void enable_pulsing(bool enable);
+ BHandler *determine_target(BMessage* msg, BHandler* target, bool pref);
+ void kb_navigate();
+ void navigate_to_next(int32 direction, bool group = false);
+ void set_focus(BView* focus, bool notify_input_server);
+ bool InUpdate();
+ void DequeueAll();
+ bool find_token_and_handler(BMessage* msg,
+ int32* token,
+ BHandler* *handler);
+ window_type compose_type(window_look look,
+ window_feel feel) const;
+ void decompose_type(window_type type,
+ window_look* look,
+ window_feel* feel) const;
+
+ void SetIsFilePanel(bool panel);
+ bool IsFilePanel() const;
+
+ // 3 deprecated calls
+ void AddFloater(BWindow* a_floating_window);
+ void RemoveFloater(BWindow* a_floating_window);
+ window_type WindowType() const;
+
+ char *fTitle;
+ int32 server_token;
+ char fInUpdate;
+ char f_active;
+ short fShowLevel;
+ uint32 fFlags;
+
+ port_id send_port;
+ port_id receive_port;
+
+ BView *top_view;
+ BView *fFocus;
+ BView *fLastMouseMovedView;
+ _BSession_ *a_session;
+ BMenuBar *fKeyMenuBar;
+ BButton *fDefaultButton;
+ BList accelList;
+ int32 top_view_token;
+ bool pulse_enabled;
+ bool fViewsNeedPulse;
+ bool fIsFilePanel;
+ bool fUnused1;
+ bigtime_t pulse_rate;
+ bool fWaitingForMenu;
+ bool fOffscreen;
+ sem_id fMenuSem;
+ float fMaxZoomH;
+ float fMaxZoomV;
+ float fMinWindH;
+ float fMinWindV;
+ float fMaxWindH;
+ float fMaxWindV;
+ BRect fFrame;
+ window_look fLook;
+ _view_attr_ *fCurDrawViewState;
+ window_feel fFeel;
+ int32 fLastViewToken;
+ _CEventPort_* fEventPort;
+ BMessageRunner *fPulseRunner;
+ BRect fCurrentFrame;
+
+ uint32 _reserved[2]; // was 8
+#if !_PR3_COMPATIBLE_
+ uint32 _more_reserved[4];
+#endif
+};
+
+// inline definitions ----------------------------------------------------------
+inline void BWindow::Close()
+{
+ Quit();
+}
+//------------------------------------------------------------------------------
+
+#endif // _WINDOW_H
+
+/*
+ * $Log $
+ *
+ * $Id $
+ *
+ */
+
diff --git a/headers/os/kernel/OS.h b/headers/os/kernel/OS.h
new file mode 100644
index 0000000000..8c3b5d824a
--- /dev/null
+++ b/headers/os/kernel/OS.h
@@ -0,0 +1,246 @@
+/* OS.h
+ *
+ * Quake with fear - it's back!!!
+ */
+
+#ifndef _OS_H
+#define _OS_H
+
+/**
+ * @mainpage OpenBeOS Header Documentation
+ *
+ * @section Introduction
+ * This is the header documentation as produced with doxygen. Anyone can
+ * produce this using the doxygen tool and doing this
+ *
+ * cd docs
+ * doxygen doxygen.conf
+ *
+ * The resulting files will be produced in dox/html.
+ *
+ * @section Updating
+ * I will attempt to keep these up to date, but if they're not, just
+ * give me a nudge!
+ */
+
+/**
+ * @file kernel/OS.h
+ * @brief Definitions, prototypes needed throughout the OS
+ */
+
+/**
+ * @defgroup OpenBeOS_Headers OpenBeOS System Headers
+ * @brief Headers that are available for applications
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include
+
+#define B_OS_NAME_LENGTH 32
+
+/**
+ * @defgroup Areas Memory Areas
+ * @ingroup OpenBeOS_Headers
+ * @{
+ */
+
+/* temporary hacks */
+typedef int32 team_id;
+typedef int32 area_id;
+
+/* Areas */
+typedef struct area_info {
+ area_id area;
+ char name[B_OS_NAME_LENGTH];
+ int foo;
+ size_t size;
+ uint32 lock;
+ uint32 protection;
+ team_id team;
+ uint32 ram_size;
+ uint32 copy_count;
+ uint32 in_count;
+ uint32 out_count;
+ void *address;
+} area_info;
+
+#define get_area_info(id, ainfo) \
+ _get_area_info((id), (ainfo),sizeof(*(ainfo)))
+#define get_next_area_info(team, cookie, ainfo) \
+ _get_next_area_info((team), (cookie), (ainfo), sizeof(*(ainfo)))
+
+/** @} */
+
+/**
+ * @defgroup Ports Messaging Ports
+ * @ingroup OpenBeOS_Headers
+ * @{
+ */
+
+/* Ports */
+typedef struct port_info {
+ port_id port;
+ team_id team;
+ char name[B_OS_NAME_LENGTH];
+ int32 capacity; /* queue depth */
+ int32 queue_count; /* # msgs waiting to be read */
+ int32 total_count; /* total # msgs read so far */
+} port_info;
+
+port_id create_port(int32, const char *);
+port_id find_port(const char *);
+int read_port(port_id, int32 *, void *, size_t);
+int read_port_etc(port_id, int32 *, void *, size_t, uint32, bigtime_t);
+int write_port(port_id, int32, const void *, size_t);
+int write_port_etc(port_id, int32, const void *, size_t, uint32, bigtime_t);
+int close_port(port_id port);
+int delete_port(port_id port);
+
+ssize_t port_buffer_size(port_id);
+ssize_t port_buffer_size_etc(port_id, uint32, bigtime_t);
+ssize_t port_count(port_id);
+int set_port_owner(port_id, team_id);
+
+int _get_port_info(port_id, port_info *, size_t);
+int _get_next_port_info(team_id, int32 *, port_info *, size_t);
+
+#define get_port_info(port, info) \
+ _get_port_info((port), (info), sizeof(*(info)))
+
+#define get_next_port_info(team, cookie, info) \
+ _get_next_port_info((team), (cookie), (info), sizeof(*(info)))
+
+/** @} */
+
+/**
+ * @defgroup Sems Semaphores
+ * @ingroup OpenBeOS_Headers
+ * @{
+ */
+
+#define B_CAN_INTERRUPT 1
+#define B_DO_NOT_RESCHEDULE 2
+#define B_CHECK_PERMISSION 4
+#define B_TIMEOUT 8
+#define B_RELATIVE_TIMEOUT 8
+#define B_ABSOLUTE_TIMEOUT 16
+
+typedef struct sem_info {
+ sem_id sem;
+ proc_id proc;
+ char name[B_OS_NAME_LENGTH];
+ int32 count;
+ thread_id latest_holder;
+} sem_info;
+
+sem_id create_sem_etc(int count, const char *name, proc_id owner);
+sem_id create_sem(int count, const char *name);
+int delete_sem(sem_id id);
+int delete_sem_etc(sem_id id, int return_code);
+int acquire_sem(sem_id id);
+int acquire_sem_etc(sem_id id, int count, int flags, bigtime_t timeout);
+int release_sem(sem_id id);
+int release_sem_etc(sem_id id, int count, int flags);
+int get_sem_count(sem_id id, int32* thread_count);
+int _get_sem_info(sem_id id, struct sem_info *info, size_t);
+int _get_next_sem_info(proc_id proc, uint32 *cookie, struct sem_info *info, size_t);
+int set_sem_owner(sem_id id, proc_id proc);
+
+#define get_sem_info(sem, info) \
+ _get_sem_info((sem), (info), sizeof(*(info)))
+
+#define get_next_sem_info(team, cookie, info) \
+ _get_next_sem_info((team), (cookie), (info), sizeof(*(info)))
+
+/** @} */
+
+/**
+ * @defgroup Threads Threads
+ * @ingroup OpenBeOS_Headers
+ * @{
+ */
+
+/* Threads */
+
+//enum {
+// THREAD_STATE_READY = 0, // ready to run
+// THREAD_STATE_RUNNING, // running right now somewhere
+// THREAD_STATE_WAITING, // blocked on something
+// THREAD_STATE_SUSPENDED, // suspended, not in queue
+// THREAD_STATE_FREE_ON_RESCHED, // free the thread structure upon reschedule
+// THREAD_STATE_BIRTH // thread is being created
+//};
+
+typedef enum {
+ B_THREAD_RUNNING=1,
+ B_THREAD_READY,
+ B_THREAD_RECEIVING,
+ B_THREAD_ASLEEP,
+ B_THREAD_SUSPENDED,
+ B_THREAD_WAITING
+} thread_state;
+
+#define THREAD_IDLE_PRIORITY 0
+
+#define THREAD_NUM_PRIORITY_LEVELS 64
+#define THREAD_MIN_PRIORITY (THREAD_IDLE_PRIORITY + 1)
+#define THREAD_MAX_PRIORITY (THREAD_NUM_PRIORITY_LEVELS - THREAD_NUM_RT_PRIORITY_LEVELS - 1)
+
+#define THREAD_NUM_RT_PRIORITY_LEVELS 16
+#define THREAD_MIN_RT_PRIORITY (THREAD_MAX_PRIORITY + 1)
+#define THREAD_MAX_RT_PRIORITY (THREAD_NUM_PRIORITY_LEVELS - 1)
+
+#define THREAD_LOWEST_PRIORITY THREAD_MIN_PRIORITY
+#define THREAD_LOW_PRIORITY 12
+#define THREAD_MEDIUM_PRIORITY 24
+#define THREAD_HIGH_PRIORITY 36
+#define THREAD_HIGHEST_PRIORITY THREAD_MAX_PRIORITY
+
+#define THREAD_RT_LOW_PRIORITY THREAD_MIN_RT_PRIORITY
+#define THREAD_RT_HIGH_PRIORITY THREAD_MAX_RT_PRIORITY
+
+#define B_LOW_PRIORITY 5
+#define B_NORMAL_PRIORITY 10
+#define B_DISPLAY_PRIORITY 15
+#define B_URGENT_DISPLAY_PRIORITY 20
+#define B_REAL_TIME_DISPLAY_PRIORITY 100
+#define B_URGENT_PRIORITY 110
+#define B_REAL_TIME_PRIORITY 120
+
+typedef struct {
+ thread_id thread;
+ team_id team;
+ char name[B_OS_NAME_LENGTH];
+ thread_state state;
+ int32 priority;
+ sem_id sem;
+ bigtime_t user_time;
+ bigtime_t kernel_time;
+ void *stack_base;
+ void *stack_end;
+} thread_info;
+
+typedef struct {
+ bigtime_t user_time;
+ bigtime_t kernel_time;
+} team_usage_info;
+
+typedef int32 (*thread_func) (void *);
+
+thread_id spawn_thread (thread_func, const char *, int32, void *);
+int kill_thread(thread_id thread);
+int resume_thread(thread_id thread);
+int suspend_thread(thread_id thread);
+
+thread_id find_thread(const char *);
+
+/** @} */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _OS_H */
+
diff --git a/headers/os/kernel/dirent.h b/headers/os/kernel/dirent.h
new file mode 100644
index 0000000000..33c111ff7d
--- /dev/null
+++ b/headers/os/kernel/dirent.h
@@ -0,0 +1,35 @@
+/**
+ * @file dirent.h
+ * @brief File Control functions and definitions
+ */
+
+#ifndef _DIRENT_H
+#define _DIRENT_H
+
+typedef struct dirent {
+ vnode_id d_ino;
+ unsigned short d_reclen;
+ char d_name[1];
+} dirent_t;
+
+typedef struct {
+ int fd;
+ struct dirent *ent;
+ struct dirent me;
+} DIR;
+
+#ifndef MAXNAMLEN
+#ifdef NAME_MAX
+#define MAXNAMLEN NAME_MAX
+#else
+#define MAXNAMLEN 256
+#endif
+#endif
+
+DIR *opendir(const char *dirname);
+struct dirent *readdir(DIR *dirp);
+int closedir(DIR *dirp);
+void rewinddir(DIR *dirp);
+
+#endif /* _DIRENT_H */
+
diff --git a/headers/os/kernel/fcntl.h b/headers/os/kernel/fcntl.h
new file mode 100644
index 0000000000..bafd82eba0
--- /dev/null
+++ b/headers/os/kernel/fcntl.h
@@ -0,0 +1,341 @@
+/*-
+ * Copyright (c) 1983, 1990, 1993
+ * The Regents of the University of California. All rights reserved.
+ * (c) UNIX System Laboratories, Inc.
+ * All or some portions of this file are derived from material licensed
+ * to the University of California by American Telephone and Telegraph
+ * Co. or Unix System Laboratories, Inc. and are reproduced herein with
+ * the permission of UNIX System Laboratories, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. 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.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
+ *
+ * @(#)fcntl.h 8.3 (Berkeley) 1/21/94
+ */
+
+/**
+ * @file fcntl.h
+ * @brief File Control functions and definitions
+ */
+
+#ifndef _FCNTL_H_
+#define _FCNTL_H_
+
+/**
+ * @defgroup Fcntl fcntl.h
+ * @brief File Control functions and definitions
+ * @note Definitions in this file also apply to open() and
+ * internally in the kernel
+ * @note Relevant kernel functions should be here as well
+ * @ingroup OpenBeOS_POSIX
+ * @{
+ */
+
+#ifndef _KERNEL_
+//#include
+#endif
+
+
+/**
+ * @defgroup File_Status_Flags File Status Flags
+ * The flags described in this section are used by fcntl(), open() and also
+ * withing the kernel.
+ * @note O_ are used by fcntl() and open()
+ * @note F flags are used by the kernel
+ * @ingroup fcntl
+ * @{
+ */
+/** open for reading only */
+#define O_RDONLY 0x0000
+/** open for writing only */
+#define O_WRONLY 0x0001
+/** open for reading and writing */
+#define O_RDWR 0x0002
+/** mask for above modes */
+#define O_ACCMODE 0x0003
+
+#ifndef _POSIX_SOURCE
+ /** kernel flag to allow testing of read/write directly
+ * @note not #ifdef _KERNEL_ to allow TIOCFLUSH to work */
+ #define FREAD 0x0001
+ /** kernel flag to allow testing of read/write directly
+ * @note not #ifdef _KERNEL_ to allow TIOCFLUSH to work */
+ #define FWRITE 0x0002
+#endif
+
+/** no delay */
+#define O_NONBLOCK 0x0004
+/** set append mode */
+#define O_APPEND 0x0008
+/** open with shared file lock */
+#define O_SHLOCK 0x0010
+/** open with exclusive file lock */
+#define O_EXLOCK 0x0020
+/** signal pgrp when data ready */
+#define O_ASYNC 0x0040
+/** backwards compatibility */
+#define O_FSYNC O_SYNC
+/** if path is a symlink, don't follow */
+#define O_NOFOLLOW 0x0100
+/** synchronous writes */
+#define O_SYNC 0x0080
+/** create if nonexistant */
+#define O_CREAT 0x0200
+/** truncate to zero length */
+#define O_TRUNC 0x0400
+/** error if already exists */
+#define O_EXCL 0x0800
+
+#ifdef _KERNEL_
+ /* mark during gc() */
+ #define FMARK 0x1000
+ /* defer for next gc pass */
+ #define FDEFER 0x2000
+ /* descriptor holds advisory lock */
+ #define FHASLOCK 0x4000
+#endif
+
+/*
+ * POSIX 1003.1 specifies a higher granularity for syncronous operations
+ * than are currently supported. We may want to look at what needs to be done
+ * to support these. At present just map them.
+ */
+/** @def O_DSYNC synchronous data writes */
+#define O_DSYNC O_SYNC
+/** @def O_RSYNC synchronous reads */
+#define O_RSYNC O_SYNC
+
+/* defined by POSIX 1003.1; BSD default, this bit is not required */
+/** @def O_NOCTTY don't assign controlling terminal */
+#define O_NOCTTY 0x8000
+
+#ifdef _KERNEL_
+ /*
+ * convert from open() flags to/from fflags; convert O_RD/WR to FREAD/FWRITE.
+ * For out-of-range values for the flags, be slightly careful (but lossy).
+ */
+ /** @def FFLAGS(oflags) Convert from O_ flags to F flags for kernel */
+ #define FFLAGS(oflags) (((oflags) & ~O_ACCMODE) | (((oflags) + 1) & O_ACCMODE))
+ /** @def OFLAGS(fflags) Convert from F flags to O_ flags for open() */
+ #define OFLAGS(fflags) (((fflags) & ~O_ACCMODE) | (((fflags) - 1) & O_ACCMODE))
+
+ /** @def FMASK bits to save after open */
+ #define FMASK (FREAD|FWRITE|FAPPEND|FASYNC|FFSYNC|FNONBLOCK)
+ /** @def FCNTLFLAGS bits settable by fcntl(F_SETFL, ...) */
+ #define FCNTLFLAGS (FAPPEND|FASYNC|FFSYNC|FNONBLOCK)
+#endif
+
+/*
+ * The O_* flags used to have only F* names, which were used in the kernel
+ * and by fcntl. We retain the F* names for the kernel f_flags field
+ * and for backward compatibility for fcntl.
+ */
+#ifndef _POSIX_SOURCE
+ /** kernel/compat */
+ #define FAPPEND O_APPEND
+ /** kernel/compat */
+ #define FASYNC O_ASYNC
+ /** kernel */
+ #define FFSYNC O_SYNC
+ /** kernel */
+ #define FNONBLOCK O_NONBLOCK
+ /** compat */
+ #define FNDELAY O_NONBLOCK
+ /** compat */
+ #define O_NDELAY O_NONBLOCK
+#endif
+
+/** @} */
+
+/**
+ * @defgroup FCNTL_Flags Flags used for fcntl()
+ * @ingroup FCNTL
+ * @{
+ */
+
+/**
+ * @def F_DUPFD Return a new file descriptor that has
+ * @li the lowest number available (>= fd used)
+ * @li same object references as original fd
+ * @li same offsets as original (file only)
+ * @li same file status
+ * @li close-on-exec flag is set so it will remain open across execv()
+ *
+ * @ref FD_CLOEXEC
+ */
+#define F_DUPFD 0 /* duplicate file descriptor */
+/** @def F_GETFD Get the close-on-exec flag for the fd
+ * @note the argument is ignored
+ * @ref FD_CLOEXEC */
+#define F_GETFD 1
+/** @def F_SETFD Set the close-on-exec flag for the fd
+ * @ref FD_CLOEXEC */
+#define F_SETFD 2
+/** @def F_GETFL Get fd status flags */
+#define F_GETFL 3
+/** @def F_SETFL Set the fd status flags */
+#define F_SETFL 4
+/** @def F_GETOWN Get the process ID receiving SIGIO/SIGURG signals */
+#define F_GETOWN 5
+/** @def F_SETOWN Set the process ID receiving SIGIO/SIGURG signals */
+#define F_SETOWN 6
+/** @def F_GETLK Get the first lock that blocks the requested lock requested
+ * int the flock structure passed in.
+ * @li If the call succeeds then the structure is returned unaltered except
+ * the lock type is set to F_UNLCK
+ * @li If the call fails the details of the blocking lock will be inserted
+ * into the strcture, overwriting the details submitted.
+ */
+#define F_GETLK 7
+/** @def F_SETLK Set/Clear a file segment lock based on the flock structure
+ * passed in.
+ * @note If a shared/exclusive lock cannot be set, EAGAIN will be returned
+ */
+#define F_SETLK 8
+/** @def F_SETLKW Same as F_SETLK but will block if a shared/exclusive
+ * lock is requested and is not available.
+ */
+#define F_SETLKW 9
+
+/* file descriptor flags (F_GETFD, F_SETFD) */
+/** @def FD_CLOEXEC Flag set in status is fd is set to remain open
+ * across exec
+ * @ref F_DUPFD
+ * @ref F_GETFD
+ * @ref F_SETFD
+ */
+#define FD_CLOEXEC 1 /* close-on-exec flag */
+/** @} */
+
+/**
+ * @defgroup FCNTL_FileLocks Locking types for fcntl()
+ * @ingroup FCNTL
+ * @{
+ */
+
+/** shared or read lock */
+#define F_RDLCK 1
+/** unlock */
+#define F_UNLCK 2
+/** exclusive or write lock */
+#define F_WRLCK 3
+
+#ifdef _KERNEL_
+ /** Wait until lock is granted */
+ #define F_WAIT 0x010
+ /** Use flock(2) semantics for lock */
+ #define F_FLOCK 0x020
+ /** Use POSIX semantics for lock */
+ #define F_POSIX 0x040
+#endif
+
+/** @} */
+
+/**
+ * Advisory file segment locking data type -
+ * information passed to system by user
+ * @note This structure can be used to lock all or part of a file
+ * @note Not yet implemented in OpenBeOS
+ */
+struct flock {
+ /** starting offset for lock */
+ off_t l_start;
+ /** length of lock required (0 means lock to end of file) */
+ off_t l_len;
+ /** process id of process owning lock */
+ pid_t l_pid;
+ /** type of lock
+ * @link FCNTL_FileLocks */
+ short l_type;
+ /** type of start poition given */
+ short l_whence;
+};
+
+
+/**
+ * @defgroup FCNTL_flock Locking types for flock()
+ * @ingroup FCNTL
+ * @{
+ */
+/** shared lock */
+#define LOCK_SH 0x01
+/** exclusive lock */
+#define LOCK_EX 0x02
+/** don't block when locking */
+#define LOCK_NB 0x04
+/** unlock */
+#define LOCK_UN 0x08
+/** @} */
+
+
+#ifndef _KERNEL_MODE
+ //#include
+ #include
+
+ /** @fn int open(const char *path, int oflags, ...);
+ * Used to open or create a file for reading/writing
+ * @note oflags passed should be OR'd together, e.g.
+ * @code
+ * int fd = open("file.txt", O_RDWR | O_APPEND | O_CREAT);
+ * @endcode
+ * @note if the flag O_CREAT is supplied and the file given by path doesn't
+ * exist it will be created.
+ *
+ * @ref File_Status_Flags
+ */
+ int open (const char *, int, ...);
+
+ /** @fn int creat(const char *path, mode_t mode)
+ * Creates a file.
+ * @note Obsoleted by open()
+ * @code
+ * Same as doing open(path, O_CREAT | O_TRUNC | O_WRONLY, mode);
+ * @endcode
+ * @ref open()
+ */
+ int creat (const char *, mode_t);
+
+ /** @fn int fcntl(int fd, int cmd, ...)
+ * Provides control over the properties of a descriptor that is
+ * already open. The 3rd paramater is technically a void *, but may
+ * be interpretted as an int by some commands or cast by others.
+ * @ref FCNTL_Flags should be used as the cmd parameter
+ */
+ int fcntl (int, int, ...);
+
+ /** @fn int flock(int fd, int operation)
+ * Applies or removes an advisory lock from descriptor fd.
+ * @ref FCNTL_flock codes should be used as the operation parameter
+ */
+ int flock (int, int);
+#endif
+
+/** @} */
+
+#endif /* !_SYS_FCNTL_H_ */
+
diff --git a/headers/os/kernel/sys/domain.h b/headers/os/kernel/sys/domain.h
new file mode 100644
index 0000000000..6ba774e21c
--- /dev/null
+++ b/headers/os/kernel/sys/domain.h
@@ -0,0 +1,26 @@
+/* domain.h */
+
+/* A domain is just a container for like minded protocols! */
+
+#ifndef DOMAIN_H
+#define DOMAIN_H
+
+struct domain {
+ int dom_family; /* AF_INET and so on */
+ char *dom_name;
+
+ void (*dom_init)(void); /* initialise */
+
+ struct protosw *dom_protosw; /* the protocols we have */
+ struct domain *dom_next;
+
+ int (*dom_rtattach)(void **, int);
+ int dom_rtoffset;
+ int dom_maxrtkey;
+};
+
+struct domain *domains;
+void add_domain(struct domain *dom, int fam);
+void remove_domain(int fam);
+
+#endif /* DOMAIN_H */
diff --git a/headers/os/kernel/sys/filio.h b/headers/os/kernel/sys/filio.h
new file mode 100644
index 0000000000..a68c42200b
--- /dev/null
+++ b/headers/os/kernel/sys/filio.h
@@ -0,0 +1,40 @@
+/**
+ * @file sys/filio.h
+ * @brief ioctl() definitions for file descriptor operations
+ */
+
+#ifndef _SYS_FILIO_H
+#define _SYS_FILIO_H
+/**
+ * @defgroup IOCTL_filio sys/filio.h
+ * @brief ioctl() definitions for file descriptor operations
+ * @ingroup OpenBeOS_POSIX
+ * @ingroup IOCTL
+ * @{
+ */
+
+#include
+
+/** @def FIOCLEX set close on exec
+ * @ref FD_CLOEXEC */
+#define FIOCLEX _IO('f', 1)
+/** @def FIONCLEX remove close on exec flag
+ * @ref FD_CLOEXEC*/
+#define FIONCLEX _IO('f', 2)
+/** @def FIBMAP get logical block
+ * @note this is not yet implemented on OpenBeOS */
+#define FIBMAP _IOWR('f', 122, void *)
+/** @def FIOASYNC set/clear async I/O */
+#define FIOASYNC _IOW('f', 123, int)
+/** @def FIOGETOWN get owner */
+#define FIOGETOWN _IOR('f', 123, int)
+/** @def FIOSETOWN set owner */
+#define FIOSETOWN _IOW('f', 123, int)
+/** @def FIONBIO set/clear non-blocking I/O */
+#define FIONBIO _IOW('f', 126, int)
+/** @def FIONREAD get number of bytes available to read */
+#define FIONREAD _IOW('f', 127, int)
+
+/** @} */
+
+#endif /* _SYS_FILIO_H */
diff --git a/headers/os/kernel/sys/ioccom.h b/headers/os/kernel/sys/ioccom.h
new file mode 100644
index 0000000000..9af5c74643
--- /dev/null
+++ b/headers/os/kernel/sys/ioccom.h
@@ -0,0 +1,80 @@
+/**
+ * @file sys/ioccom.h
+ * @brief Definitions & maros common to ioctl
+ */
+
+#ifndef _SYS_IOCCOM_H
+#define _SYS_IOCCOM_H
+
+/**
+ * @defgroup IOCTL_common sys/ioccom.h
+ * @brief Definitions & maros common to ioctl()
+ * @ingroup OpenBeOS_POSIX
+ * @ingroup IOCTL
+ * Ioctl values passed as the command (2nd) variable have the
+ * command encoded in the lower word and the size of any parameters
+ * in the upper word (in or out).
+ * The high 3 bits are used to encode whether it's in or out.
+ * Due to this you can't just give an ioctl value, you need to encode
+ * it using macros described in
+ * @ref IOCTL_macros
+ * @{
+ */
+
+/** @defgroup IOCTL_parm ioctl() parameter definitions
+ * @ingroup IOCTL_common
+ * @{
+ */
+/** @def IOC_VOID */
+#define IOC_VOID (ulong)0x20000000
+/** @def IOC_OUT ioctl expects data (output) */
+#define IOC_OUT (ulong)0x40000000
+/** @def IOC_IN ioctl passes a value in */
+#define IOC_IN (ulong)0x80000000
+/** @def IOC_INOUT ioctl passes data in and out */
+#define IOC_INOUT (IOC_IN|IOC_OUT)
+/** @def IOC_DIRMASK */
+#define IOC_DIRMASK (ulong)0xe0000000
+/** @} */
+
+/**
+ * @defgroup IOCTL_macros IOCTL macros
+ * These should be used to define the values passed in as cmd to
+ * ioctl()
+ * @ingroup IOCTL_common
+ * @{
+ */
+/** @def IOCPARM_MASK mask used to for following macros */
+#define IOCPARM_MASK 0x1fff
+/** @def IOCPARM_LEN(x) length of the data passed as param */
+#define IOCPARM_LEN(x) (((x) >> 16) & IOCPARM_MASK)
+/** @def IOCBASECMD(x) the base command encoded in the ioctl value */
+#define IOCBASECMD(x) ((x) & ~(IOCPARM_MASK << 16))
+/** @def IOCGROUP(x) which group of ioctl() commands does this belong to? */
+#define IOCGROUP(x) (((x) >> 8) & 0xff)
+/** @def IOCPARM_MAX Maximum size of parameter that can be passed (20 bytes) */
+#define IOCPARM_MAX 20
+
+/**
+ * @defgroup IOCTL_createmacros macro's to create ioctl() values
+ * @brief these macro's should be used to create new ioctl() values
+ * @ingroup IOCTL_common
+ * @{
+ */
+/** @def _IOC(inout, group, num , len) create a new ioctl */
+#define _IOC(inout, group, num, len) \
+ (inout | ((len & IOCPARM_MASK)<<16) | ((group) << 8) | (num))
+/** @def _IO(g,n) create a new void ioctl for group g, number n */
+#define _IO(g,n) _IOC(IOC_VOID, (g), (n), 0)
+/** @def _IOR(g,n,t) create a ioctl() that reads a value of type t*/
+#define _IOR(g,n,t) _IOC(IOC_OUT, (g), (n), sizeof(t))
+/** @def _IOW(g,n,t) ioctl() that writes value of type t, group g, number n */
+#define _IOW(g,n,t) _IOC(IOC_IN , (g), (n), sizeof(t))
+/** @def _IOWR(g,n,t) ioctl() that reads/writes value of type t
+ * @note this isn't _IORW as this causes name conflicts on some systems */
+#define _IOWR(g,n,t) _IOC(IOC_INOUT, (g), (n), sizeof(t))
+/** @} */
+
+/** @} */
+
+#endif /* _SYS_IOCCOM_H */
diff --git a/headers/os/kernel/sys/ioctl.h b/headers/os/kernel/sys/ioctl.h
new file mode 100644
index 0000000000..8a2bcb6243
--- /dev/null
+++ b/headers/os/kernel/sys/ioctl.h
@@ -0,0 +1,37 @@
+/**
+ * @file sys/ioctl.h
+ * @brief I/O control functions
+ */
+
+#ifndef _SYS_IOCTL_H
+#define _SYS_IOCTL_H
+
+/**
+ * @defgroup IOCTL sys/ioctl.h
+ * @brief I/O control functions
+ * @ingroup OpenBeOS_POSIX
+ * @{
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#include
+
+#include
+#include
+
+#ifndef _KERNEL_MODE
+ /** @fn int ioctl(int fd, ulong cmd, ...)
+ * Manipulates the characteristics of the affected descriptor. May be used
+ * on all forms of descriptor, including sockets and pipes. cmd should be one
+ * of the values given in
+ * @ref IOCTL_cmds
+ */
+ int ioctl(int, ulong, ...);
+#endif /* !_KERNEL_MODE */
+
+/** @} */
+#endif /* _SYS_IOCTL_H */
diff --git a/headers/os/kernel/sys/protosw.h b/headers/os/kernel/sys/protosw.h
new file mode 100644
index 0000000000..2b46b55af2
--- /dev/null
+++ b/headers/os/kernel/sys/protosw.h
@@ -0,0 +1,147 @@
+/* protosw.h */
+
+#ifndef PROTOSW_H
+#define PROTOSW_H
+
+#include "sys/socketvar.h" /* for struct socket */
+#include "net/route.h"
+
+#define PRCO_SETOPT 0
+#define PRCO_GETOPT 1
+
+/* every protocol module init's one of these and passes it into
+ * the add_protocol() function, defined below */
+/* NB The pr_domain pointer will be filled in during the
+ * add_protocol() call
+ */
+struct protosw {
+ char *name;
+ char *mod_path;
+ uint16 pr_type; /* SOCK_xxx */
+ struct domain *pr_domain;
+ uint16 pr_protocol; /* protocol number */
+ uint16 pr_flags; /* flags, PR_xxx */
+ int layer; /* which layer are we? */
+
+ /* the functions! */
+ void (*pr_init)(void);
+ void (*pr_input)(struct mbuf*, int);
+ int (*pr_output)(struct mbuf *, struct mbuf *,
+ struct route *,
+ int, void *);
+
+ int (*pr_userreq)(struct socket *, int,
+ struct mbuf *,
+ struct mbuf *,
+ struct mbuf *);
+ int (*pr_sysctl)(int *, uint, void *, size_t *, void *, size_t);
+ void (*pr_ctlinput)(int, struct sockaddr *, void *);
+ int (*pr_ctloutput)(int, struct socket*, int, int, struct mbuf **);
+
+ struct protosw *pr_next; /* pointer to next proto structure */
+ struct protosw *dom_next; /* next protosw pointed by the domain */
+};
+
+
+/*
+ * Values for pr_flags.
+ * PR_ADDR requires PR_ATOMIC;
+ * PR_ADDR and PR_CONNREQUIRED are mutually exclusive.
+ */
+#define PR_ATOMIC 0x01 /* exchange atomic messages only */
+#define PR_ADDR 0x02 /* addresses given with messages */
+#define PR_CONNREQUIRED 0x04 /* connection required by protocol */
+#define PR_WANTRCVD 0x08 /* want PRU_RCVD calls */
+#define PR_RIGHTS 0x10 /* passes capabilities */
+#define PR_ABRTACPTDIS 0x20 /* abort on accept(2) to disconnected
+ socket */
+
+#define PR_SLOWHZ 2 /* 2 timeouts per second... */
+#define PR_FASTHZ 5 /* 5 timeouts per second */
+/*
+ * Defines for the userreq function req field are below.
+ *
+ * (*usrreq)(up, req, m, nam, opt);
+ *
+ * up is a (struct socket *)
+ * req is one of these requests,
+ * m is a optional mbuf chain containing a message,
+ * nam is an optional mbuf chain containing an address,
+ * opt is a pointer to a socketopt structure or nil.
+ *
+ * The protocol is responsible for disposal of the mbuf chain m,
+ * the caller is responsible for any space held by nam and opt.
+ * A non-zero return from usrreq gives an
+ * UNIX error number which should be passed to higher level software.
+ */
+#define PRU_ATTACH 0 /* attach protocol to up */
+#define PRU_DETACH 1 /* detach protocol from up */
+#define PRU_BIND 2 /* bind socket to address */
+#define PRU_LISTEN 3 /* listen for connection */
+#define PRU_CONNECT 4 /* establish connection to peer */
+#define PRU_ACCEPT 5 /* accept connection from peer */
+#define PRU_DISCONNECT 6 /* disconnect from peer */
+#define PRU_SHUTDOWN 7 /* won't send any more data */
+#define PRU_RCVD 8 /* have taken data; more room now */
+#define PRU_SEND 9 /* send this data */
+#define PRU_ABORT 10 /* abort (fast DISCONNECT, DETATCH) */
+#define PRU_CONTROL 11 /* control operations on protocol */
+#define PRU_SENSE 12 /* return status into m */
+#define PRU_RCVOOB 13 /* retrieve out of band data */
+#define PRU_SENDOOB 14 /* send out of band data */
+#define PRU_SOCKADDR 15 /* fetch socket's address */
+#define PRU_PEERADDR 16 /* fetch peer's address */
+#define PRU_CONNECT2 17 /* connect two sockets */
+/* begin for protocols internal use */
+#define PRU_FASTTIMO 18 /* 200ms timeout */
+#define PRU_SLOWTIMO 19 /* 500ms timeout */
+#define PRU_PROTORCV 20 /* receive from below */
+#define PRU_PROTOSEND 21 /* send to below */
+#define PRU_PEEREID 22 /* get local peer eid */
+
+#define PRU_NREQ 22
+
+/*
+ * The arguments to the ctlinput routine are
+ * (*protosw[].pr_ctlinput)(cmd, sa, arg);
+ * where cmd is one of the commands below, sa is a pointer to a sockaddr,
+ * and arg is an optional caddr_t argument used within a protocol family.
+ */
+#define PRC_IFDOWN 0 /* interface transition */
+#define PRC_ROUTEDEAD 1 /* select new route if possible ??? */
+#define PRC_MTUINC 2 /* increase in mtu to host */
+#define PRC_QUENCH2 3 /* DEC congestion bit says slow down */
+#define PRC_QUENCH 4 /* some one said to slow down */
+#define PRC_MSGSIZE 5 /* message size forced drop */
+#define PRC_HOSTDEAD 6 /* host appears to be down */
+#define PRC_HOSTUNREACH 7 /* deprecated (use PRC_UNREACH_HOST) */
+#define PRC_UNREACH_NET 8 /* no route to network */
+#define PRC_UNREACH_HOST 9 /* no route to host */
+#define PRC_UNREACH_PROTOCOL 10 /* dst says bad protocol */
+#define PRC_UNREACH_PORT 11 /* bad port # */
+/* was PRC_UNREACH_NEEDFRAG 12 (use PRC_MSGSIZE) */
+#define PRC_UNREACH_SRCFAIL 13 /* source route failed */
+#define PRC_REDIRECT_NET 14 /* net routing redirect */
+#define PRC_REDIRECT_HOST 15 /* host routing redirect */
+#define PRC_REDIRECT_TOSNET 16 /* redirect for type of service & net */
+#define PRC_REDIRECT_TOSHOST 17 /* redirect for tos & host */
+#define PRC_TIMXCEED_INTRANS 18 /* packet lifetime expired in transit */
+#define PRC_TIMXCEED_REASS 19 /* lifetime expired on reass q */
+#define PRC_PARAMPROB 20 /* header incorrect */
+
+#define PRC_NCMDS 21
+
+#define PRC_IS_REDIRECT(cmd) \
+ ((cmd) >= PRC_REDIRECT_NET && (cmd) <= PRC_REDIRECT_TOSHOST)
+
+
+/* Network stack defines... */
+#ifdef _NETWORK_STACK
+struct protosw *protocols;
+void add_protocol(struct protosw *pr, int fam);
+void remove_protocol(struct protosw *pr);
+#endif
+struct protosw *pffindproto(int domain, int protocol, int type);
+struct protosw *pffindtype(int domain, int type);
+
+#endif /* PROTOSW_H */
diff --git a/headers/os/kernel/sys/socket.h b/headers/os/kernel/sys/socket.h
new file mode 100644
index 0000000000..1ab46688e5
--- /dev/null
+++ b/headers/os/kernel/sys/socket.h
@@ -0,0 +1,251 @@
+/* sys/socket.h */
+
+
+#ifndef _SYS_SOCKET_H
+#define _SYS_SOCKET_H
+
+#include
+#include
+#include
+
+/* These are the address/protocol families we'll be using... */
+/* NB these should be added to as required... */
+
+/* If we want to have Binary compatability we may need to alter these
+ * to agree with the Be versions...
+ */
+#define AF_UNSPEC 0
+#define AF_LOCAL 1
+#define AF_UNIX AF_LOCAL /* for compatability */
+#define AF_INET 2
+#define AF_ROUTE 3
+#define AF_IMPLINK 4
+#define AF_LINK 18
+#define AF_IPX 23
+#define AF_INET6 24
+
+#define AF_MAX 24
+
+#define PF_UNSPEC AF_UNSPEC
+#define PF_INET AF_INET
+#define PF_ROUTE AF_ROUTE
+#define PF_LINK AF_LINK
+#define PF_INET6 AF_INET6
+#define PF_IPX AF_IPX
+#define PF_IMPLINK AF_IMPLINK
+
+/* Types of socket we can create (eventually) */
+#define SOCK_DGRAM 10
+#define SOCK_STREAM 11
+#define SOCK_RAW 12
+#define SOCK_MISC 255
+
+/*
+ * Option flags per-socket.
+ */
+#define SO_DEBUG 0x0001 /* turn on debugging info recording */
+#define SO_ACCEPTCONN 0x0002 /* socket has had listen() */
+#define SO_REUSEADDR 0x0004 /* allow local address reuse */
+#define SO_KEEPALIVE 0x0008 /* keep connections alive */
+#define SO_DONTROUTE 0x0010 /* just use interface addresses */
+#define SO_BROADCAST 0x0020 /* permit sending of broadcast msgs */
+#define SO_USELOOPBACK 0x0040 /* bypass hardware when possible */
+#define SO_LINGER 0x0080 /* linger on close if data present */
+#define SO_OOBINLINE 0x0100 /* leave received OOB data in line */
+#define SO_REUSEPORT 0x0200 /* allow local address & port reuse */
+
+#define SOL_SOCKET 0xffff
+
+/*
+ * Additional options, not kept in so_options.
+ */
+#define SO_SNDBUF 0x1001 /* send buffer size */
+#define SO_RCVBUF 0x1002 /* receive buffer size */
+#define SO_SNDLOWAT 0x1003 /* send low-water mark */
+#define SO_RCVLOWAT 0x1004 /* receive low-water mark */
+#define SO_SNDTIMEO 0x1005 /* send timeout */
+#define SO_RCVTIMEO 0x1006 /* receive timeout */
+#define SO_ERROR 0x1007 /* get error status and clear */
+#define SO_TYPE 0x1008 /* get socket type */
+#define SO_NETPROC 0x1020 /* multiplex; network processing */
+
+/*
+ * These are the valid values for the "how" field used by shutdown(2).
+ */
+#define SHUT_RD 1
+#define SHUT_WR 2
+#define SHUT_RDWR 3
+
+struct linger {
+ int l_onoff;
+ int l_linger;
+};
+
+struct sockaddr {
+ uint8 sa_len;
+ uint8 sa_family;
+ uint8 sa_data[30];
+};
+
+/* this can hold ANY sockaddr we care to throw at it! */
+struct sockaddr_storage {
+ uint8 ss_len; /* total length */
+ uint8 ss_family; /* address family */
+ uint8 __ss_pad1[6]; /* align to quad */
+ uint64 __ss_pad2; /* force alignment for stupid compilers */
+ uint8 __ss_pad3[240]; /* pad to a total of 256 bytes */
+};
+
+struct sockproto {
+ uint16 sp_family;
+ uint16 sp_protocol;
+};
+
+#define CTL_NET 4
+
+#define CTL_NET_NAMES { \
+ { 0, 0 }, \
+ { "unix", CTLTYPE_NODE }, \
+ { "inet", CTLTYPE_NODE }, \
+ { "implink", CTLTYPE_NODE }, \
+ { "pup", CTLTYPE_NODE }, \
+ { "chaos", CTLTYPE_NODE }, \
+ { "xerox_ns", CTLTYPE_NODE }, \
+ { "iso", CTLTYPE_NODE }, \
+ { "emca", CTLTYPE_NODE }, \
+ { "datakit", CTLTYPE_NODE }, \
+ { "ccitt", CTLTYPE_NODE }, \
+ { "ibm_sna", CTLTYPE_NODE }, \
+ { "decnet", CTLTYPE_NODE }, \
+ { "dec_dli", CTLTYPE_NODE }, \
+ { "lat", CTLTYPE_NODE }, \
+ { "hylink", CTLTYPE_NODE }, \
+ { "appletalk", CTLTYPE_NODE }, \
+ { "route", CTLTYPE_NODE }, \
+ { "link_layer", CTLTYPE_NODE }, \
+ { "xtp", CTLTYPE_NODE }, \
+ { "coip", CTLTYPE_NODE }, \
+ { "cnt", CTLTYPE_NODE }, \
+ { "rtip", CTLTYPE_NODE }, \
+ { "ipx", CTLTYPE_NODE }, \
+ { "inet6", CTLTYPE_NODE }, \
+ { "pip", CTLTYPE_NODE }, \
+ { "isdn", CTLTYPE_NODE }, \
+ { "natm", CTLTYPE_NODE }, \
+ { "encap", CTLTYPE_NODE }, \
+ { "sip", CTLTYPE_NODE }, \
+ { "key", CTLTYPE_NODE }, \
+}
+
+/*
+ * PF_ROUTE - Routing table
+ *
+ * Three additional levels are defined:
+ * Fourth: address family, 0 is wildcard
+ * Fifth: type of info, defined below
+ * Sixth: flag(s) to mask with for NET_RT_FLAGS
+ */
+#define NET_RT_DUMP 1 /* dump; may limit to a.f. */
+#define NET_RT_FLAGS 2 /* by flags, e.g. RESOLVING */
+#define NET_RT_IFLIST 3 /* survey interface list */
+#define NET_RT_MAXID 4
+
+#define CTL_NET_RT_NAMES { \
+ { 0, 0 }, \
+ { "dump", CTLTYPE_STRUCT }, \
+ { "flags", CTLTYPE_STRUCT }, \
+ { "iflist", CTLTYPE_STRUCT }, \
+}
+
+ /* Max listen queue for a socket */
+#define SOMAXCONN 5 /* defined as 128 in OpenBSD */
+
+struct msghdr {
+ char * msg_name; /* address we're using (optional) */
+ uint msg_namelen; /* length of address */
+ struct iovec *msg_iov; /* scatter/gather array we'll use */
+ uint msg_iovlen; /* # elements in msg_iov */
+ char * msg_control; /* extra data */
+ uint msg_controllen; /* length of extra data */
+ int msg_flags; /* flags */
+};
+
+/* Defines used in msghdr structure. */
+#define MSG_OOB 0x1 /* process out-of-band data */
+#define MSG_PEEK 0x2 /* peek at incoming message */
+#define MSG_DONTROUTE 0x4 /* send without using routing tables */
+#define MSG_EOR 0x8 /* data completes record */
+#define MSG_TRUNC 0x10 /* data discarded before delivery */
+#define MSG_CTRUNC 0x20 /* control data lost before delivery */
+#define MSG_WAITALL 0x40 /* wait for full request or error */
+#define MSG_DONTWAIT 0x80 /* this message should be nonblocking */
+#define MSG_BCAST 0x100 /* this message rec'd as broadcast */
+#define MSG_MCAST 0x200 /* this message rec'd as multicast */
+
+struct cmsghdr {
+ uint cmsg_len;
+ int cmsg_level;
+ int cmsg_type;
+ /* there now follows uchar[] cmsg_data */
+};
+
+#define SIOCSHIWAT _IOW('s', 0, int) /* set high watermark */
+#define SIOCGHIWAT _IOR('s', 1, int) /* get high watermark */
+#define SIOCSLOWAT _IOW('s', 2, int) /* set low watermark */
+#define SIOCGLOWAT _IOR('s', 3, int) /* get low watermark */
+#define SIOCATMARK _IOR('s', 7, int) /* at oob mark? */
+
+#define SIOCADDRT _IOW('r', 10, struct ortentry) /* add route */
+#define SIOCDELRT _IOW('r', 11, struct ortentry) /* delete route */
+
+#define SIOCSIFADDR _IOW('i', 12, struct ifreq) /* set ifnet address */
+#define OSIOCGIFADDR _IOWR('i', 13, struct ifreq) /* get ifnet address */
+#define SIOCGIFADDR _IOWR('i', 33, struct ifreq) /* get ifnet address */
+#define SIOCSIFDSTADDR _IOW('i', 14, struct ifreq) /* set p-p address */
+#define OSIOCGIFDSTADDR _IOWR('i', 15, struct ifreq) /* get p-p address */
+#define SIOCGIFDSTADDR _IOWR('i', 34, struct ifreq) /* get p-p address */
+#define SIOCSIFFLAGS _IOW('i', 16, struct ifreq) /* set ifnet flags */
+#define SIOCGIFFLAGS _IOWR('i', 17, struct ifreq) /* get ifnet flags */
+#define OSIOCGIFBRDADDR _IOWR('i', 18, struct ifreq) /* get broadcast addr */
+#define SIOCGIFBRDADDR _IOWR('i', 35, struct ifreq) /* get broadcast addr */
+#define SIOCSIFBRDADDR _IOW('i', 19, struct ifreq) /* set broadcast addr */
+#define OSIOCGIFCONF _IOWR('i', 20, struct ifconf) /* get ifnet list */
+#define SIOCGIFCONF _IOWR('i', 36, struct ifconf) /* get ifnet list */
+#define OSIOCGIFNETMASK _IOWR('i', 21, struct ifreq) /* get net addr mask */
+#define SIOCGIFNETMASK _IOWR('i', 37, struct ifreq) /* get net addr mask */
+#define SIOCSIFNETMASK _IOW('i', 22, struct ifreq) /* set net addr mask */
+#define SIOCGIFMETRIC _IOWR('i', 23, struct ifreq) /* get IF metric */
+#define SIOCSIFMETRIC _IOW('i', 24, struct ifreq) /* set IF metric */
+#define SIOCDIFADDR _IOW('i', 25, struct ifreq) /* delete IF addr */
+#define SIOCAIFADDR _IOW('i', 26, struct ifaliasreq)/* add/chg IF alias */
+#define SIOCGIFDATA _IOWR('i', 27, struct ifreq) /* get if_data */
+
+#define SIOCGIFMTU _IOWR('i', 126, struct ifreq) /* get ifnet MTU */
+#define SIOCSIFMTU _IOW('i', 127, struct ifreq) /* set ifnet MTU */
+
+#define SIOCADDMULTI _IOW('i', 49, struct ifreq) /* add m'cast addr */
+#define SIOCDELMULTI _IOW('i', 50, struct ifreq) /* del m'cast addr */
+
+#ifndef _KERNEL_MODE
+/* Function declarations */
+int socket (int, int, int);
+int bind(int, const struct sockaddr *, int);
+int connect(int, const struct sockaddr *, int);
+int listen(int, int);
+int accept(int, struct sockaddr *, int *);
+int closesocket(int);
+int shutdown(int sock, int how);
+
+ssize_t send(int, const void *, size_t, int);
+ssize_t recv(int, void *, size_t, int);
+ssize_t sendto(int, const void *, size_t, int, const struct sockaddr *, size_t);
+ssize_t recvfrom(int, void *, size_t, int, struct sockaddr *, size_t *);
+
+int setsockopt(int, int, int, const void *, size_t);
+int getsockopt(int, int, int, void *, size_t *);
+int getpeername(int, struct sockaddr *, int *);
+int getsockname(int, struct sockaddr *, int *);
+#endif /* _KERNEL_MODE_ */
+
+#endif /* _SYS_SOCKET_H */
+
diff --git a/headers/os/kernel/sys/socketvar.h b/headers/os/kernel/sys/socketvar.h
new file mode 100644
index 0000000000..f363d15f6a
--- /dev/null
+++ b/headers/os/kernel/sys/socketvar.h
@@ -0,0 +1,236 @@
+/* socketvar.h */
+
+
+#ifndef SYS_SOCKETVAR_H
+#define SYS_SOCKETVAR_H
+
+#include
+#include
+#include
+#include
+
+struct sockbuf {
+ uint32 sb_cc; /* actual chars in buffer */
+ uint32 sb_hiwat; /* max actual char count (high water mark) */
+ uint32 sb_mbcnt; /* chars of mbufs used */
+ uint32 sb_mbmax; /* max chars of mbufs to use */
+ int32 sb_lowat; /* low water mark */
+ struct mbuf *sb_mb; /* the mbuf chain */
+ int16 sb_flags; /* flags, see below */
+ int32 sb_timeo; /* timeout for read/write */
+ sem_id sb_sleep; /* our sleep sem */
+ sem_id sb_pop; /* sem to wait on... */
+};
+
+#define SB_MAX (256*1024) /* default for max chars in sockbuf */
+#define SB_LOCK 0x01 /* lock on data queue */
+#define SB_WANT 0x02 /* someone is waiting to lock */
+#define SB_WAIT 0x04 /* someone is waiting for data/space */
+#define SB_SEL 0x08 /* someone is selecting */
+#define SB_ASYNC 0x10 /* ASYNC I/O, need signals */
+#define SB_NOINTR 0x40 /* operations not interruptible */
+#define SB_KNOTE 0x80 /* kernel note attached */
+#define SB_NOTIFY (SB_WAIT|SB_SEL|SB_ASYNC)
+
+typedef void (*socket_event_callback)(void * socket, uint32 event, void * cookie);
+
+struct socket {
+ uint16 so_type; /* type of socket */
+ uint16 so_options; /* socket options */
+ int16 so_linger; /* dreaded linger value */
+ int16 so_state; /* socket state */
+ char *so_pcb; /* pointer to the control block */
+ sem_id so_lock; /* socket lock */
+ sem_id so_timeo; /* our wait channel */
+
+ struct protosw *so_proto; /* pointer to protocol module */
+
+ struct socket *so_head;
+ struct socket *so_q0;
+ struct socket *so_q;
+
+ int16 so_q0len;
+ int16 so_qlen;
+ int16 so_qlimit;
+ int32 so_error;
+// pid_t so_pgid;
+ uint32 so_oobmark;
+
+ /* our send/recv buffers */
+ struct sockbuf so_snd;
+ struct sockbuf so_rcv;
+
+ // event callback
+ socket_event_callback event_callback;
+ void * event_callback_cookie;
+ int sel_ev;
+};
+
+/* Select event bit mask */
+#define SEL_READ 0x01
+#define SEL_WRITE 0x02
+#define SEL_EX 0x04
+
+/*
+ * Socket state bits.
+ */
+#define SS_NOFDREF 0x001 /* no file table ref any more */
+#define SS_ISCONNECTED 0x002 /* socket connected to a peer */
+#define SS_ISCONNECTING 0x004 /* in process of connecting to peer */
+#define SS_ISDISCONNECTING 0x008 /* in process of disconnecting */
+#define SS_CANTSENDMORE 0x010 /* can't send more data to peer */
+#define SS_CANTRCVMORE 0x020 /* can't receive more data from peer */
+#define SS_RCVATMARK 0x040 /* at mark on input */
+#define SS_ISDISCONNECTED 0x800 /* socket disconnected from peer */
+
+#define SS_PRIV 0x080 /* privileged for broadcast, raw... */
+#define SS_NBIO 0x100 /* non-blocking ops */
+#define SS_ASYNC 0x200 /* async i/o notify */
+#define SS_ISCONFIRMING 0x400 /* deciding to accept connection req */
+#define SS_CONNECTOUT 0x1000 /* connect, not accept, at this end */
+
+/* helpful defines... */
+
+/* adjust counters in sb reflecting freeing of m */
+#define sbfree(sb, m) { \
+ (sb)->sb_cc -= (m)->m_len; \
+ (sb)->sb_mbcnt -= MSIZE; \
+ if ((m)->m_flags & M_EXT) \
+ (sb)->sb_mbcnt -= (m)->m_ext.ext_size; \
+}
+
+#define sbspace(sb) \
+ ((uint32) min((int)((sb)->sb_hiwat - (sb)->sb_cc), \
+ (int)((sb)->sb_mbmax - (sb)->sb_mbcnt)))
+
+/* do we have to send all at once on a socket? */
+#define sosendallatonce(so) \
+ ((so)->so_proto->pr_flags & PR_ATOMIC)
+
+/* adjust counters in sb reflecting allocation of m */
+#define sballoc(sb, m) { \
+ (sb)->sb_cc += (m)->m_len; \
+ (sb)->sb_mbcnt += MSIZE; \
+ if ((m)->m_flags & M_EXT) \
+ (sb)->sb_mbcnt += (m)->m_ext.ext_size; \
+}
+
+#define soreadable(so) \
+ ((so)->so_rcv.sb_cc >= (so)->so_rcv.sb_lowat || \
+ ((so)->so_state & SS_CANTRCVMORE) || \
+ (so)->so_qlen || (so)->so_error)
+
+#define sowriteable(so) \
+ ((sbspace(&(so)->so_snd) >= (so)->so_snd.sb_lowat) && \
+ (((so)->so_state & SS_ISCONNECTED) || \
+ (((so)->so_proto->pr_flags & PR_CONNREQUIRED) == 0) || \
+ ((so)->so_state & SS_CANTSENDMORE) || (so)->so_error))
+
+#define M_WAITOK 0x0000
+#define M_NOWAIT 0x0001
+
+/*
+ * Set lock on sockbuf sb; sleep if lock is already held.
+ * Unless SB_NOINTR is set on sockbuf, sleep is interruptible.
+ * Returns error without lock if sleep is interrupted.
+ */
+#define sblock(sb, wf) ((sb)->sb_flags & SB_LOCK ? \
+ (((wf) == M_WAITOK) ? sb_lock(sb) : EWOULDBLOCK) : \
+ ((sb)->sb_flags |= SB_LOCK), 0)
+
+/* release lock on sockbuf sb */
+#define sbunlock(sb) { \
+ (sb)->sb_flags &= ~SB_LOCK; \
+ if ((sb)->sb_flags & SB_WANT) { \
+ (sb)->sb_flags &= ~SB_WANT; \
+ wakeup((sb)->sb_sleep); \
+ } \
+}
+
+#define sorwakeup(so) sowakeup((so), &(so)->so_rcv)
+/* we don't handle upcall for sockets */
+#define sowwakeup(so) sowakeup((so), &(so)->so_snd)
+
+#ifdef _KERNEL_MODE
+
+uint32 sb_max;
+
+/* Function prototypes */
+
+/* These are the ones we export to libnet.so */
+
+int initsocket(void **);
+int socreate (int, struct socket **, int, int);
+int soshutdown(void *, int);
+int soclose (void *);
+
+int sobind (void *, char *, int);
+int solisten (void *, int);
+int soconnect (void *, char *, int);
+int soaccept (void *, void **, void *, int *);
+
+int writeit (void *, struct iovec *, int);
+int readit (void *, struct iovec *, int *);
+int sendit (void *, struct msghdr *, int, int *);
+int recvit (void *, struct msghdr *, char *, int *);
+
+//int so_ioctl (void *, int, void *, size_t);
+int sosysctl (int *, uint, void *, size_t *, void *, size_t);
+int sosetopt (void *, int, int, const void *, size_t);
+int sogetopt (void *, int, int, void *, size_t *);
+
+int sogetpeername(void *, struct sockaddr *, int *);
+int sogetsockname(void *, struct sockaddr *, int *);
+
+
+/* these are all private to the stack...although may be shared with
+ * other network modules.
+ */
+
+int sosend(struct socket *so, struct mbuf *addr, struct uio *uio,
+ struct mbuf *top, struct mbuf *control, int flags);
+
+struct socket *sonewconn(struct socket *head, int connstatus);
+int set_socket_event_callback(void *, socket_event_callback, void *, int);
+int soreserve (struct socket *so, uint32 sndcc, uint32 rcvcc);
+
+void sbrelease (struct sockbuf *sb);
+int sbreserve (struct sockbuf *sb, uint32 cc);
+void sbdrop (struct sockbuf *sb, int len);
+void sbdroprecord (struct sockbuf *sb);
+void sbflush (struct sockbuf *sb);
+int sbwait (struct sockbuf *sb);
+void sbappend (struct sockbuf *sb, struct mbuf *m);
+int sbappendaddr (struct sockbuf *sb, struct sockaddr *asa,
+ struct mbuf *m0, struct mbuf *control);
+int sbappendcontrol (struct sockbuf *sb, struct mbuf *m0,
+ struct mbuf *control);
+void sbappendrecord (struct sockbuf *sb, struct mbuf *m0);
+void sbcheck (struct sockbuf *sb);
+void sbcompress (struct sockbuf *sb, struct mbuf *m, struct mbuf *n);
+int soreceive (struct socket *so, struct mbuf **paddr, struct uio *uio,
+ struct mbuf **mp0, struct mbuf **controlp, int *flagsp);
+void sowakeup(struct socket *so, struct sockbuf *sb);
+int sbwait(struct sockbuf *sb);
+
+int sodisconnect(struct socket *);
+void sofree(struct socket *);
+
+void sohasoutofband(struct socket *so);
+void socantsendmore(struct socket *so);
+void socantrcvmore(struct socket *so);
+void soisconnected (struct socket *so);
+void soisconnecting (struct socket *so);
+void soisdisconnected (struct socket *so);
+void soisdisconnecting (struct socket *so);
+void soqinsque (struct socket *head, struct socket *so, int q);
+int soqremque (struct socket *so, int q);
+int sorflush(struct socket *so);
+
+int sb_lock(struct sockbuf *sb);
+int nsleep(sem_id chan, char *msg, int timeo);
+void wakeup(sem_id chan);
+
+#endif /* _NETWORK_STACK */
+
+#endif /* SYS_SOCKETVAR_H */
diff --git a/headers/os/kernel/sys/stat.h b/headers/os/kernel/sys/stat.h
new file mode 100644
index 0000000000..1f5e68cccc
--- /dev/null
+++ b/headers/os/kernel/sys/stat.h
@@ -0,0 +1,229 @@
+/*-
+ * Copyright (c) 1982, 1986, 1989, 1993
+ * The Regents of the University of California. All rights reserved.
+ * (c) UNIX System Laboratories, Inc.
+ * All or some portions of this file are derived from material licensed
+ * to the University of California by American Telephone and Telegraph
+ * Co. or Unix System Laboratories, Inc. and are reproduced herein with
+ * the permission of UNIX System Laboratories, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. 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.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
+ *
+ * @(#)stat.h 8.9 (Berkeley) 8/17/94
+ */
+
+#ifndef _SYS_STAT_H_
+#define _SYS_STAT_H_
+
+//#include
+
+/**
+ * @file stat.h
+ * @brief Stat structures and defines
+ */
+
+/**
+ * @defgroup OpenBeOS_POSIX POSIX Headers
+ * @brief Headers to provide the POSIX layer
+ */
+
+/**
+ * @defgroup Stat sys/stat.h
+ * @brief Structures and prototypes for stat operations
+ * @ingroup OpenBeOS_POSIX
+ * @{
+ */
+
+/* XXX - some types we don't yet have in sys/types.h (because we don't yet
+ * have a sys/types.h and these aren't in ktypes.h!)
+ */
+
+#ifdef _KERNEL_MODE_
+struct ostat {
+ mode_t st_mode; /* inode protection mode */
+ ino_t st_ino; /* inode's number */
+ uint16 st_dev; /* inode's device */
+ nlink_t st_nlink; /* number of hard links */
+ uid_t st_uid; /* user ID of the file's owner */
+ gid_t st_gid; /* group ID of the file's group */
+ off_t st_size; /* file size, in bytes */
+ time_t st_atime; /* time of last access */
+ time_t st_mtime; /* time of last data modification */
+ time_t st_ctime; /* time of last file status change */
+ int64 st_blocks; /* blocks allocated for file */
+ int32 st_blksize; /* optimal blocksize for I/O */
+};
+#endif /* _KERNEL_MODE_ */
+
+/* XXX - The stat structure, as defined by POSIX.
+ * Just implement what we can for the time being.
+ */
+struct stat {
+ mode_t st_mode; /* File mode */
+ ino_t st_ino; /* vnode_id */
+// dev_t st_dev; /* inode's device */
+ nlink_t st_nlink; /* number of hard links */
+ uid_t st_uid; /* user ID of the file's owner */
+ gid_t st_gid; /* group ID of the file's group */
+ off_t st_size; /* file size, in bytes */
+ time_t st_atime; /* time of last access */
+ time_t st_mtime; /* time of last data modification */
+ time_t st_ctime; /* time of last file status change */
+ int64 st_blocks; /* blocks allocated for file */
+ uint32 st_blksize; /* optimal blocksize for I/O */
+};
+
+/**
+ * @defgroup POSIX_filemodes File mode defines
+ * @brief Defines of the file modes we allow
+ * @ingroup Stat
+ *@{
+ */
+/** set user id on execution */
+#define S_ISUID 0004000
+/** set group id on execution */
+#define S_ISGID 0002000
+/** sticky bit */
+#define S_ISTXT 0001000
+
+/**
+ * @def S_IRWXU RWX mask for owner
+ * @def S_IRUSR R for owner
+ * @def S_IWUSR W for owner
+ * @def S_IXUSR X for owner
+ */
+#define S_IRWXU 0000700
+#define S_IRUSR 0000400
+#define S_IWUSR 0000200
+#define S_IXUSR 0000100
+
+/* @def S_IRWXG RWX mask for group
+ * @def S_IWGRP W for group
+ * @def S_IRGRP R for group
+ * @def S_IXGRP X for group
+ */
+#define S_IRWXG 0000070
+#define S_IRGRP 0000040
+#define S_IWGRP 0000020
+#define S_IXGRP 0000010
+
+#define S_IRWXO 0000007 /* RWX mask for other */
+#define S_IROTH 0000004 /* R for other */
+#define S_IWOTH 0000002 /* W for other */
+#define S_IXOTH 0000001 /* X for other */
+
+#define S_IFMT 0170000
+#define S_IFSOCK 0140000
+#define S_IFIFO 0010000
+#define S_IFCHR 0020000
+#define S_IFDIR 0040000
+#define S_IFBLK 0060000
+#define S_IFREG 0100000
+#define S_IFLNK 0120000
+#define S_IFWHT 0160000
+#define S_ISVTX 0001000
+
+#define S_ISDIR(m) ((m & 0170000) == 0040000) /* directory */
+#define S_ISCHR(m) ((m & 0170000) == 0020000) /* char special */
+#define S_ISBLK(m) ((m & 0170000) == 0060000) /* block special */
+#define S_ISREG(m) ((m & 0170000) == 0100000) /* regular file */
+#define S_ISFIFO(m) ((m & 0170000) == 0010000) /* fifo */
+#define S_ISLNK(m) ((m & 0170000) == 0120000) /* symbolic link */
+#define S_ISSOCK(m) ((m & 0170000) == 0140000)/* socket */
+#define S_ISWHT(m)((m & 0170000) == 0160000)/* whiteout */
+
+/** 00777 */
+#define ACCESSPERMS (S_IRWXU | S_IRWXG | S_IRWXO)
+/** 07777 */
+#define ALLPERMS (S_ISUID|S_ISGID|S_ISTXT|S_IRWXU|S_IRWXG|S_IRWXO)
+/** 00666 */
+#define DEFFILEMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
+
+/** @} */
+/*
+ * Definitions of flags stored in file flags word.
+ *
+ * Super-user and owner changeable flags.
+ */
+#define UF_SETTABLE 0x0000ffff /* mask of owner changeable flags */
+#define UF_NODUMP 0x00000001 /* do not dump file */
+#define UF_IMMUTABLE 0x00000002 /* file may not be changed */
+#define UF_APPEND 0x00000004 /* writes to file may only append */
+#define UF_OPAQUE 0x00000008 /* directory is opaque wrt. union */
+/*
+ * Super-user changeable flags.
+ */
+#define SF_SETTABLE 0xffff0000 /* mask of superuser changeable flags */
+#define SF_ARCHIVED 0x00010000 /* file is archived */
+#define SF_IMMUTABLE 0x00020000 /* file may not be changed */
+#define SF_APPEND 0x00040000 /* writes to file may only append */
+
+#ifdef _KERNEL_MODE
+/*
+ * Shorthand abbreviations of above.
+ */
+#define OPAQUE (UF_OPAQUE)
+#define APPEND (UF_APPEND | SF_APPEND)
+#define IMMUTABLE (UF_IMMUTABLE | SF_IMMUTABLE)
+#endif /* _KERNEL_MODE */
+
+#ifndef _KERNEL_MODE_
+ //#include
+
+ /** @fn int chmod(const char *path, mode_t mode)
+ * Changes the file protection modes to those given by mode
+ *
+ * @ref POISX_filemodes
+ */
+ int chmod (const char *, mode_t);
+ /** @fn int fstat(int fd, struct stat *stat)
+ * get file information on a file identified by descriptor fd
+ *
+ * @ref stat
+ */
+ int fstat (int, struct stat *);
+ //int mknod (const char *, mode_t, dev_t);
+ int mkdir (const char *, mode_t);
+ int mkfifo (const char *, mode_t);
+ /** @fn int stat(const char *path, struct stat *stat)
+ * Get file information for file path and store it in the structure
+ * stat
+ *
+ * @ref stat
+ */
+ int stat (const char *, struct stat *);
+ mode_t umask (mode_t);
+ int fchmod (int, mode_t);
+ int lstat (const char *, struct stat *);
+
+#endif
+
+/** @} */
+
+#endif /* !_SYS_STAT_H_ */
diff --git a/headers/os/kernel/sys/uio.h b/headers/os/kernel/sys/uio.h
new file mode 100644
index 0000000000..7a7baafad7
--- /dev/null
+++ b/headers/os/kernel/sys/uio.h
@@ -0,0 +1,41 @@
+/* uio.h */
+
+#ifndef _SYS_UIO_H
+#define _SYS_UIO_H
+
+#include
+
+typedef struct iovec {
+ void *iov_base;
+ size_t iov_len;
+} iovec;
+
+
+#ifdef _KERNEL_MODE
+enum uio_rw { UIO_READ, UIO_WRITE };
+
+/* Segment flag values. */
+enum uio_seg {
+ UIO_USERSPACE, /* from user data space */
+ UIO_SYSSPACE /* from system space */
+};
+
+struct uio {
+ struct iovec *uio_iov; /* pointer to array of iovecs */
+ int uio_iovcnt; /* number of iovecs in array */
+ off_t uio_offset; /* offset into file this uio corresponds to */
+ size_t uio_resid; /* residual i/o count */
+ enum uio_seg uio_segflg; /* see above */
+ enum uio_rw uio_rw; /* see above */
+// struct proc *uio_procp; /* process if UIO_USERSPACE */
+};
+
+int uiomove(char *cp, int n, struct uio *uio);
+#endif
+
+ssize_t readv(int fd, const struct iovec *vector, size_t count);
+ssize_t readv_pos(int fd, off_t pos, const struct iovec *vec, size_t count);
+ssize_t writev(int fd, const struct iovec *vector, size_t count);
+ssize_t writev_pos(int fd, off_t pos, const struct iovec *vec, size_t count);
+
+#endif /* _SYS_UIO_H */
diff --git a/headers/os/kernel/syscalls.h b/headers/os/kernel/syscalls.h
new file mode 100755
index 0000000000..c037e86d1a
--- /dev/null
+++ b/headers/os/kernel/syscalls.h
@@ -0,0 +1,128 @@
+/*
+** Copyright 2001, Travis Geiselbrecht. All rights reserved.
+** Distributed under the terms of the NewOS License.
+*/
+#ifndef _LIBSYS_SYSCALLS_H
+#define _LIBSYS_SYSCALLS_H
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int sys_null();
+
+/* fs api */
+int sys_mount(const char *path, const char *device, const char *fs_name, void *args);
+int sys_unmount(const char *path);
+int sys_sync();
+int sys_open(const char *path, stream_type st, int omode);
+int sys_close(int fd);
+int sys_fsync(int fd);
+ssize_t sys_read(int fd, void *buf, off_t pos, size_t len);
+ssize_t sys_write(int fd, const void *buf, off_t pos, size_t len);
+int sys_seek(int fd, off_t pos, int seek_type);
+int sys_ioctl(int fd, ulong op, void *buf);
+int sys_create(const char *path, stream_type stream_type);
+int sys_unlink(const char *path);
+int sys_rename(const char *oldpath, const char *newpath);
+int sys_rstat(const char *path, struct stat *stat);
+int sys_wstat(const char *path, struct stat *stat, int stat_mask);
+int sys_fstat(int, struct stat *);
+char *sys_getcwd(char* buf, size_t size);
+int sys_setcwd(const char* path);
+int sys_dup(int fd);
+int sys_dup2(int ofd, int nfd);
+
+bigtime_t sys_system_time();
+int sys_snooze(bigtime_t time);
+int sys_getrlimit(int resource, struct rlimit * rlp);
+int sys_setrlimit(int resource, const struct rlimit * rlp);
+
+/* sem functions */
+sem_id kern_create_sem(int count, const char *name);
+int kern_delete_sem(sem_id id);
+int kern_acquire_sem(sem_id id);
+int kern_acquire_sem_etc(sem_id id, int count, int flags, bigtime_t timeout);
+int kern_release_sem(sem_id id);
+int kern_release_sem_etc(sem_id id, int count, int flags);
+int sys_sem_get_count(sem_id id, int32* thread_count);
+int kern_get_sem_info(sem_id, struct sem_info *, size_t);
+int kern_get_next_sem_info(proc_id, uint32 *, struct sem_info *, size_t);
+int sys_set_sem_owner(sem_id id, proc_id proc);
+
+
+int sys_proc_get_table(struct proc_info *pi, size_t len);
+void sys_exit(int retcode);
+proc_id sys_proc_create_proc(const char *path, const char *name, char **args, int argc, int priority);
+
+thread_id kern_spawn_thread(int (*func)(void*), const char *, int, void *);
+thread_id kern_get_current_thread_id(void);
+int kern_suspend_thread(thread_id tid);
+int kern_resume_thread(thread_id tid);
+int kern_kill_thread(thread_id tid);
+
+int sys_thread_wait_on_thread(thread_id tid, int *retcode);
+int sys_proc_kill_proc(proc_id pid);
+
+proc_id sys_get_current_proc_id();
+int sys_proc_wait_on_proc(proc_id pid, int *retcode);
+
+region_id sys_vm_create_anonymous_region(const char *name, void **address, int addr_type,
+ addr size, int wiring, int lock);
+region_id sys_vm_clone_region(const char *name, void **address, int addr_type,
+ region_id source_region, int mapping, int lock);
+region_id sys_vm_map_file(const char *name, void **address, int addr_type,
+ addr size, int lock, int mapping, const char *path, off_t offset);
+int sys_vm_delete_region(region_id id);
+int sys_vm_get_region_info(region_id id, vm_region_info *info);
+
+/* kernel port functions */
+port_id sys_port_create(int32 queue_length, const char *name);
+int sys_port_close(port_id id);
+int sys_port_delete(port_id id);
+port_id sys_port_find(const char *port_name);
+int sys_port_get_info(port_id id, struct port_info *info);
+int sys_port_get_next_port_info(proc_id proc, uint32 *cookie, struct port_info *info);
+ssize_t sys_port_buffer_size(port_id port);
+ssize_t sys_port_buffer_size_etc(port_id port, uint32 flags, bigtime_t timeout);
+int32 sys_port_count(port_id port);
+ssize_t sys_port_read(port_id port, int32 *msg_code, void *msg_buffer, size_t buffer_size);
+ssize_t sys_port_read_etc(port_id port, int32 *msg_code, void *msg_buffer, size_t buffer_size, uint32 flags, bigtime_t timeout);
+int sys_port_set_owner(port_id port, team_id proc);
+int sys_port_write(port_id port, int32 msg_code, const void *msg_buffer, size_t buffer_size);
+int sys_port_write_etc(port_id port, int32 msg_code, const void *msg_buffer, size_t buffer_size, uint32 flags, bigtime_t timeout);
+
+/* atomic_* ops (needed for cpus that dont support them directly) */
+int sys_atomic_add(int *val, int incr);
+int sys_atomic_and(int *val, int incr);
+int sys_atomic_or(int *val, int incr);
+int sys_atomic_set(int *val, int set_to);
+int sys_test_and_set(int *val, int set_to, int test_val);
+
+int sys_sysctl(int *, uint, void *, size_t *, void *, size_t);
+int sys_socket(int, int, int);
+
+/* region prototypes */
+area_id sys_find_region_by_name(const char *);
+
+/* This is a real BSD'ism :) Basically it returns the size of the
+ * descriptor table for the current process as an integer.
+ */
+int kern_getdtablesize(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/headers/os/kernel/thread_types.h b/headers/os/kernel/thread_types.h
new file mode 100644
index 0000000000..09b2bb3d53
--- /dev/null
+++ b/headers/os/kernel/thread_types.h
@@ -0,0 +1,172 @@
+#ifndef _KERNEL_THREAD_TYPES_H
+#define _KERNEL_THREAD_TYPES_H
+
+/**
+ * @file kernel/thread_types.h
+ * @brief Definitions, structures and functions for threads.
+ */
+
+/**
+ * @defgroup Kernel_Threads Threads
+ * @ingroup OpenBeOS_Kernel
+ * @{
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include
+#include
+#include
+#include
+#include
+
+
+#define THREAD_IDLE_PRIORITY 0
+
+#define THREAD_NUM_PRIORITY_LEVELS 64
+#define THREAD_MIN_PRIORITY (THREAD_IDLE_PRIORITY + 1)
+#define THREAD_MAX_PRIORITY (THREAD_NUM_PRIORITY_LEVELS - THREAD_NUM_RT_PRIORITY_LEVELS - 1)
+
+#define THREAD_NUM_RT_PRIORITY_LEVELS 16
+#define THREAD_MIN_RT_PRIORITY (THREAD_MAX_PRIORITY + 1)
+#define THREAD_MAX_RT_PRIORITY (THREAD_NUM_PRIORITY_LEVELS - 1)
+
+#define THREAD_LOWEST_PRIORITY THREAD_MIN_PRIORITY
+#define THREAD_LOW_PRIORITY 12
+#define THREAD_MEDIUM_PRIORITY 24
+#define THREAD_HIGH_PRIORITY 36
+#define THREAD_HIGHEST_PRIORITY THREAD_MAX_PRIORITY
+
+#define THREAD_RT_LOW_PRIORITY THREAD_MIN_RT_PRIORITY
+#define THREAD_RT_HIGH_PRIORITY THREAD_MAX_RT_PRIORITY
+
+extern spinlock_t thread_spinlock;
+#define GRAB_THREAD_LOCK() acquire_spinlock(&thread_spinlock)
+#define RELEASE_THREAD_LOCK() release_spinlock(&thread_spinlock)
+
+enum {
+ THREAD_STATE_READY = 0, // ready to run
+ THREAD_STATE_RUNNING, // running right now somewhere
+ THREAD_STATE_WAITING, // blocked on something
+ THREAD_STATE_SUSPENDED, // suspended, not in queue
+ THREAD_STATE_FREE_ON_RESCHED, // free the thread structure upon reschedule
+ THREAD_STATE_BIRTH // thread is being created
+};
+
+enum {
+ PROC_STATE_NORMAL, // normal state
+ PROC_STATE_BIRTH, // being contructed
+ PROC_STATE_DEATH // being killed
+};
+
+#define SIG_NONE 0
+#define SIG_SUSPEND 1
+#define SIG_KILL 2
+
+/**
+ * The proc structure.
+ * @note This is available only within the kernel.
+ */
+struct proc {
+ /** Pointer to next proc structure */
+ struct proc *next;
+ /** The proc_id for this process.
+ * @note This is equivalent to a team_id (???)
+ */
+ proc_id id;
+ /** name of the process
+ * @note The maximum length is current SYS_MAX_OS_NAME_LEN chars.
+ */
+ char name[SYS_MAX_OS_NAME_LEN];
+ /** How many threads does this process have? */
+ int num_threads;
+ /** Current state of the process. */
+ int state;
+ /** Signals pending for the process? */
+ int pending_signals;
+ /** Pointer to the I/O context for this process.
+ * @note see fd.h for definition of ioctx
+ */
+ void *ioctx;
+ /** Path ??? */
+ char path[SYS_MAX_PATH_LEN];
+ /** Our address space pointer */
+ aspace_id _aspace_id;
+ vm_address_space *aspace;
+ vm_address_space *kaspace;
+ struct thread *main_thread;
+ struct thread *thread_list;
+ struct arch_proc arch_info;
+};
+
+struct thread {
+ struct thread *all_next;
+ struct thread *proc_next;
+ struct thread *q_next;
+ thread_id id;
+ char name[SYS_MAX_OS_NAME_LEN];
+ int priority;
+ int state;
+ int next_state;
+ union cpu_ent *cpu;
+ int pending_signals;
+ bool in_kernel;
+ sem_id sem_blocking;
+ int sem_count;
+ int sem_acquire_count;
+ int sem_deleted_retcode;
+ int sem_errcode;
+ int sem_flags;
+ addr fault_handler;
+ addr entry;
+ void *args;
+ struct proc *proc;
+ sem_id return_code_sem;
+ region_id kernel_stack_region_id;
+ addr kernel_stack_base;
+ region_id user_stack_region_id;
+ addr user_stack_base;
+
+ bigtime_t user_time;
+ bigtime_t kernel_time;
+ bigtime_t last_time;
+
+ // architecture dependant section
+ struct arch_thread arch_info;
+};
+
+struct thread_queue {
+ struct thread *head;
+ struct thread *tail;
+};
+
+/**
+ * Process information structure
+ * @note Seem to be a lot of duplicated fields with main
+ * proc structure???
+ */
+struct proc_info {
+ proc_id id;
+ char name[SYS_MAX_OS_NAME_LEN];
+ int state;
+ int num_threads;
+};
+
+#if 1
+/**
+ * Test routine for threads.
+ * @note This function will be removed as is intended for test and
+ * development purposes only.
+ */
+int thread_test(void);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+/** @} */
+
+#endif /* _KERNEL_THREAD_TYPES_H */
+
diff --git a/headers/os/kernel/vfs_types.h b/headers/os/kernel/vfs_types.h
new file mode 100644
index 0000000000..04e19589ed
--- /dev/null
+++ b/headers/os/kernel/vfs_types.h
@@ -0,0 +1,35 @@
+#ifndef VFS_TYPES_H
+#define VFS_TYPES_H
+
+#include
+
+typedef enum {
+ STREAM_TYPE_ANY = 0,
+ STREAM_TYPE_FILE,
+ STREAM_TYPE_DIR,
+ STREAM_TYPE_DEVICE
+} stream_type;
+
+typedef void * fs_cookie;
+typedef void * file_cookie;
+typedef void * fs_vnode;
+
+//typedef struct iovec {
+// void *start;
+// size_t len;
+//} iovec;
+
+typedef struct iovecs {
+ size_t num;
+ size_t total_len;
+ iovec vec[0];
+} iovecs;
+
+//struct file_stat {
+// vnode_id vnid;
+// stream_type type;
+// off_t size;
+//};
+
+#endif
+
diff --git a/headers/os/kernel/vm_types.h b/headers/os/kernel/vm_types.h
new file mode 100755
index 0000000000..7813272621
--- /dev/null
+++ b/headers/os/kernel/vm_types.h
@@ -0,0 +1,183 @@
+#ifndef _PUBLIC_KERNEL_VM_TYPES_H
+#define _PUBLIC_KERNEL_VM_TYPES_H
+
+#include
+#include
+#include
+#include
+#include
+
+// vm page
+typedef struct vm_page {
+ struct vm_page *queue_prev;
+ struct vm_page *queue_next;
+
+ struct vm_page *hash_next;
+
+ addr ppn; // physical page number
+ off_t offset;
+
+ struct vm_cache_ref *cache_ref;
+
+ struct vm_page *cache_prev;
+ struct vm_page *cache_next;
+
+ unsigned int ref_count;
+
+ unsigned int type : 2;
+ unsigned int state : 3;
+} vm_page;
+
+enum {
+ PAGE_TYPE_PHYSICAL = 0,
+ PAGE_TYPE_DUMMY,
+ PAGE_TYPE_GUARD
+};
+
+enum {
+ PAGE_STATE_ACTIVE = 0,
+ PAGE_STATE_INACTIVE,
+ PAGE_STATE_BUSY,
+ PAGE_STATE_MODIFIED,
+ PAGE_STATE_FREE,
+ PAGE_STATE_CLEAR,
+ PAGE_STATE_WIRED,
+ PAGE_STATE_UNUSED
+};
+
+// vm_cache_ref
+typedef struct vm_cache_ref {
+ struct vm_cache *cache;
+ mutex lock;
+
+ struct vm_region *region_list;
+
+ int ref_count;
+} vm_cache_ref;
+
+// vm_cache
+typedef struct vm_cache {
+ vm_page *page_list;
+ vm_cache_ref *ref;
+ struct vm_cache *source;
+ struct vm_store *store;
+ off_t virtual_size;
+ unsigned int temporary : 1;
+ unsigned int scan_skip : 1;
+} vm_cache;
+
+// info about a region that external entities may want to know
+// used in vm_get_region_info()
+typedef struct vm_region_info {
+ region_id id;
+ addr base;
+ addr size;
+ int lock;
+ int wiring;
+ char name[SYS_MAX_OS_NAME_LEN];
+} vm_region_info;
+
+// vm region
+typedef struct vm_region {
+ char *name;
+ region_id id;
+ addr base;
+ addr size;
+ int lock;
+ int wiring;
+ int ref_count;
+
+ struct vm_cache_ref *cache_ref;
+ off_t cache_offset;
+
+ struct vm_address_space *aspace;
+ struct vm_region *aspace_next;
+ struct vm_virtual_map *map;
+ struct vm_region *cache_next;
+ struct vm_region *cache_prev;
+ struct vm_region *hash_next;
+} vm_region;
+
+// virtual map (1 per address space)
+typedef struct vm_virtual_map {
+ vm_region *region_list;
+ vm_region *region_hint;
+ int change_count;
+ sem_id sem;
+ struct vm_address_space *aspace;
+ addr base;
+ addr size;
+} vm_virtual_map;
+
+enum {
+ VM_ASPACE_STATE_NORMAL = 0,
+ VM_ASPACE_STATE_DELETION
+};
+
+// address space
+typedef struct vm_address_space {
+ vm_virtual_map virtual_map;
+ vm_translation_map translation_map;
+ char *name;
+ aspace_id id;
+ int ref_count;
+ int fault_count;
+ int state;
+ addr scan_va;
+ addr working_set_size;
+ addr max_working_set;
+ addr min_working_set;
+ bigtime_t last_working_set_adjust;
+ struct vm_address_space *hash_next;
+} vm_address_space;
+
+// vm_store
+typedef struct vm_store {
+ struct vm_store_ops *ops;
+ struct vm_cache *cache;
+ void *data;
+ off_t committed_size;
+} vm_store;
+
+// vm_store_ops
+typedef struct vm_store_ops {
+ void (*destroy)(struct vm_store *backing_store);
+ off_t (*commit)(struct vm_store *backing_store, off_t size);
+ int (*has_page)(struct vm_store *backing_store, off_t offset);
+ ssize_t (*read)(struct vm_store *backing_store, off_t offset, iovecs *vecs);
+ ssize_t (*write)(struct vm_store *backing_store, off_t offset, iovecs *vecs);
+ int (*fault)(struct vm_store *backing_store, struct vm_address_space *aspace, off_t offset);
+ void (*acquire_ref)(struct vm_store *backing_store);
+ void (*release_ref)(struct vm_store *backing_store);
+} vm_store_ops;
+
+// args for the create_area funcs
+enum {
+ REGION_ADDR_ANY_ADDRESS = 0,
+ REGION_ADDR_EXACT_ADDRESS
+};
+
+enum {
+ REGION_NO_PRIVATE_MAP = 0,
+ REGION_PRIVATE_MAP
+};
+
+enum {
+ REGION_WIRING_LAZY = 0,
+ REGION_WIRING_WIRED,
+ REGION_WIRING_WIRED_ALREADY,
+ REGION_WIRING_WIRED_CONTIG
+ };
+
+enum {
+ PHYSICAL_PAGE_NO_WAIT = 0,
+ PHYSICAL_PAGE_CAN_WAIT,
+};
+
+#define LOCK_RO 0x0
+#define LOCK_RW 0x1
+#define LOCK_KERNEL 0x2
+#define LOCK_MASK 0x3
+
+#endif /* _PUBLIC_KERNEL_VM_TYPES_H */
+
diff --git a/headers/os/media/Buffer.h b/headers/os/media/Buffer.h
new file mode 100644
index 0000000000..7af0087c52
--- /dev/null
+++ b/headers/os/media/Buffer.h
@@ -0,0 +1,108 @@
+/*******************************************************************************
+/
+/ File: Buffer.h
+/
+/ Description: A BBuffer is a container of media data in the Media Kit
+/
+/ Copyright 1997-98, Be Incorporated, All Rights Reserved
+/
+*******************************************************************************/
+
+#if !defined(_BUFFER_H)
+#define _BUFFER_H
+
+#include
+
+
+/*** A BBuffer is not the same thing as the area segment that gets cloned ***/
+/*** For each buffer that gets created, a BBuffer object is created to represent ***/
+/*** it in each participant address space. ***/
+
+
+struct _shared_buffer_list;
+
+struct buffer_clone_info {
+ buffer_clone_info();
+ ~buffer_clone_info();
+ media_buffer_id buffer;
+ area_id area;
+ size_t offset;
+ size_t size;
+ int32 flags;
+private:
+ uint32 _reserved_[4];
+};
+
+
+class BBuffer
+{
+public:
+
+ void * Data(); /* returns NULL if buffer not correctly initialized */
+ size_t SizeAvailable(); // total size of buffer (how much data can it hold)
+ size_t SizeUsed(); // how much was written (how much data does it hold)
+ void SetSizeUsed(
+ size_t size_used);
+ uint32 Flags();
+
+ void Recycle();
+ buffer_clone_info CloneInfo() const;
+
+ media_buffer_id ID(); /* 0 if not registered */
+ media_type Type();
+ media_header * Header();
+ media_audio_header * AudioHeader();
+ media_video_header * VideoHeader();
+
+ enum { /* for flags */
+ B_F1_BUFFER = 0x1,
+ B_F2_BUFFER = 0x2,
+ B_SMALL_BUFFER = 0x80000000
+ };
+
+ size_t Size(); // deprecated; use SizeAvailable()
+
+private:
+
+ friend struct _buffer_id_cache;
+ friend struct _shared_buffer_list;
+ friend class BMediaRoster;
+ friend class BBufferProducer;
+ friend class BBufferConsumer; /* for buffer receiving */
+ friend class BBufferGroup;
+ friend class BSmallBuffer;
+
+ explicit BBuffer(const buffer_clone_info & info);
+ ~BBuffer(); /* BBuffer is NOT a virtual class!!! */
+
+ BBuffer(); /* not implemented */
+ BBuffer(const BBuffer & clone); /* not implemented */
+ BBuffer & operator=(const BBuffer & clone); /* not implemented */
+
+ void SetHeader(const media_header *header);
+
+ media_header fMediaHeader;
+ _shared_buffer_list * fBufferList;
+ area_id fArea;
+ void * fData;
+ size_t fOffset;
+ size_t fSize;
+ media_buffer_id fBufferID;
+ int32 fFlags;
+
+ uint32 _reserved_buffer_[11];
+
+};
+
+
+class BSmallBuffer : public BBuffer
+{
+public:
+ BSmallBuffer();
+
+static size_t SmallBufferSizeLimit();
+
+};
+
+#endif /* _BUFFER_H */
+
diff --git a/headers/os/media/BufferConsumer.h b/headers/os/media/BufferConsumer.h
new file mode 100644
index 0000000000..31dc3fa969
--- /dev/null
+++ b/headers/os/media/BufferConsumer.h
@@ -0,0 +1,203 @@
+/*******************************************************************************
+/
+/ File: BufferConsumer.h
+/
+/ Description: A BBufferConsumer is anything that wants to receive buffers in the Media Kit
+/
+/ Copyright 1997-98, Be Incorporated, All Rights Reserved
+/
+*******************************************************************************/
+
+#if !defined(_BUFFER_CONSUMER_H)
+#define _BUFFER_CONSUMER_H
+
+#include
+#include
+
+class _buffer_id_cache;
+
+class BBufferConsumer :
+ public virtual BMediaNode
+{
+protected:
+ /* this has to be at the top to force a vtable */
+virtual ~BBufferConsumer();
+
+public:
+
+ media_type ConsumerType();
+
+ /* for encoding a region into the format needed for clipping requests */
+static status_t RegionToClipData(
+ const BRegion * region,
+ int32 * format,
+ int32 * ioSize,
+ void * data);
+
+protected:
+explicit BBufferConsumer(
+ media_type consumer_type /* = B_MEDIA_UNKNOWN_TYPE */);
+
+static void NotifyLateProducer(
+ const media_source & what_source,
+ bigtime_t how_much,
+ bigtime_t performance_time);
+ status_t SetVideoClippingFor(
+ const media_source & output,
+ const media_destination & destination,
+ const int16 * shorts,
+ int32 short_count,
+ const media_video_display_info & display,
+ void * user_data,
+ int32 * change_tag,
+ void * _reserved_ = 0); // change_tag value will be passed to RequestCompleted()
+ status_t SetOutputEnabled(
+ const media_source & source,
+ const media_destination & destination,
+ bool enabled,
+ void * user_data,
+ int32 * change_tag,
+ void * _reserved_ = 0); // change_tag value will be passed to RequestCompleted()
+ status_t RequestFormatChange(
+ const media_source & source,
+ const media_destination & destination,
+ const media_format & to_format,
+ void * user_data,
+ int32 * change_tag,
+ void * _reserved_ = 0); // change_tag value will be passed to RequestCompleted()
+ status_t RequestAdditionalBuffer( // new in 4.1
+ const media_source & source,
+ BBuffer * prev_buffer,
+ void * _reserved = NULL);
+ status_t RequestAdditionalBuffer( // new in 4.1
+ const media_source & source,
+ bigtime_t start_time,
+ void * _reserved = NULL);
+ status_t SetOutputBuffersFor( // new in 4.1
+ const media_source & source,
+ const media_destination & destination,
+ BBufferGroup * group,
+ void * user_data,
+ int32 * change_tag, // passed to RequestCompleted()
+ bool will_reclaim = false,
+ void * _reserved_ = 0);
+ status_t SendLatencyChange(
+ const media_source & source,
+ const media_destination & destination,
+ bigtime_t my_new_latency,
+ uint32 flags = 0);
+
+protected:
+
+virtual status_t HandleMessage(
+ int32 message,
+ const void * data,
+ size_t size);
+
+ /* Someone, probably the producer, is asking you about this format. Give */
+ /* your honest opinion, possibly modifying *format. Do not ask upstream */
+ /* producer about the format, since he's synchronously waiting for your */
+ /* reply. */
+virtual status_t AcceptFormat(
+ const media_destination & dest,
+ media_format * format) = 0;
+virtual status_t GetNextInput(
+ int32 * cookie,
+ media_input * out_input) = 0;
+virtual void DisposeInputCookie(
+ int32 cookie) = 0;
+virtual void BufferReceived(
+ BBuffer * buffer) = 0;
+virtual void ProducerDataStatus(
+ const media_destination & for_whom,
+ int32 status,
+ bigtime_t at_performance_time) = 0;
+virtual status_t GetLatencyFor(
+ const media_destination & for_whom,
+ bigtime_t * out_latency,
+ media_node_id * out_timesource) = 0;
+virtual status_t Connected(
+ const media_source & producer, /* here's a good place to request buffer group usage */
+ const media_destination & where,
+ const media_format & with_format,
+ media_input * out_input) = 0;
+virtual void Disconnected(
+ const media_source & producer,
+ const media_destination & where) = 0;
+ /* The notification comes from the upstream producer, so he's already cool with */
+ /* the format; you should not ask him about it in here. */
+virtual status_t FormatChanged(
+ const media_source & producer,
+ const media_destination & consumer,
+ int32 change_tag,
+ const media_format & format) = 0;
+
+ /* Given a performance time of some previous buffer, retrieve the remembered tag */
+ /* of the closest (previous or exact) performance time. Set *out_flags to 0; the */
+ /* idea being that flags can be added later, and the understood flags returned in */
+ /* *out_flags. */
+virtual status_t SeekTagRequested(
+ const media_destination & destination,
+ bigtime_t in_target_time,
+ uint32 in_flags,
+ media_seek_tag * out_seek_tag,
+ bigtime_t * out_tagged_time,
+ uint32 * out_flags);
+
+private:
+
+ friend class BMediaNode;
+
+ BBufferConsumer(); /* private unimplemented */
+ BBufferConsumer(
+ const BBufferConsumer & clone);
+ BBufferConsumer & operator=(
+ const BBufferConsumer & clone);
+
+ // these functions are deprecated from the 4.0 API
+static status_t SetVideoClippingFor(
+ const media_source & output,
+ const int16 * shorts,
+ int32 short_count,
+ const media_video_display_info & display,
+ int32 * change_tag); // change_tag value will be passed to RequestCompleted()
+static status_t RequestFormatChange(
+ const media_source & source,
+ const media_destination & destination,
+ media_format * io_to_format, // the "o" part is unused from 4.1
+ int32 * change_tag); // change_tag value will be passed to RequestCompleted()
+static status_t SetOutputEnabled(
+ const media_source & source,
+ bool enabled,
+ int32 * change_tag); // change_tag value will be passed to RequestCompleted()
+
+ /* Mmmh, stuffing! */
+ status_t _Reserved_BufferConsumer_0(void *); /* SeekTagRequested */
+virtual status_t _Reserved_BufferConsumer_1(void *);
+virtual status_t _Reserved_BufferConsumer_2(void *);
+virtual status_t _Reserved_BufferConsumer_3(void *);
+virtual status_t _Reserved_BufferConsumer_4(void *);
+virtual status_t _Reserved_BufferConsumer_5(void *);
+virtual status_t _Reserved_BufferConsumer_6(void *);
+virtual status_t _Reserved_BufferConsumer_7(void *);
+virtual status_t _Reserved_BufferConsumer_8(void *);
+virtual status_t _Reserved_BufferConsumer_9(void *);
+virtual status_t _Reserved_BufferConsumer_10(void *);
+virtual status_t _Reserved_BufferConsumer_11(void *);
+virtual status_t _Reserved_BufferConsumer_12(void *);
+virtual status_t _Reserved_BufferConsumer_13(void *);
+virtual status_t _Reserved_BufferConsumer_14(void *);
+virtual status_t _Reserved_BufferConsumer_15(void *);
+
+ friend class BMediaRoster;
+
+ media_type fConsumerType;
+ _buffer_id_cache * fBufferCache;
+ BBufferGroup *fDeleteBufferGroup;
+ uint32 _reserved_buffer_consumer_[14];
+
+};
+
+
+#endif /* _BUFFER_CONSUMER_H */
+
diff --git a/headers/os/media/BufferGroup.h b/headers/os/media/BufferGroup.h
new file mode 100644
index 0000000000..969f1f95bb
--- /dev/null
+++ b/headers/os/media/BufferGroup.h
@@ -0,0 +1,81 @@
+/*******************************************************************************
+/
+/ File: BufferGroup.h
+/
+/ Description: A BBufferGroup organizes sets of BBuffers so that you can request
+/ and reclaim them.
+/
+/ Copyright 1997-98, Be Incorporated, All Rights Reserved
+/
+*******************************************************************************/
+
+#if !defined(_BUFFER_GROUP_H)
+#define _BUFFER_GROUP_H
+
+#include
+
+struct _shared_buffer_list;
+
+class BBufferGroup
+{
+public:
+
+ BBufferGroup(
+ size_t size,
+ int32 count = 3,
+ uint32 placement = B_ANY_ADDRESS,
+ uint32 lock = B_FULL_LOCK);
+explicit BBufferGroup();
+ BBufferGroup(
+ int32 count,
+ const media_buffer_id * buffers);
+ ~BBufferGroup(); /* BBufferGroup is NOT a virtual class!!! */
+
+ status_t InitCheck();
+
+ /* use this function to add buffers you created on your own */
+ status_t AddBuffer(
+ const buffer_clone_info & info,
+ BBuffer ** out_buffer = NULL);
+
+ BBuffer * RequestBuffer(
+ size_t size,
+ bigtime_t timeout = B_INFINITE_TIMEOUT);
+ status_t RequestBuffer(
+ BBuffer * buffer,
+ bigtime_t timeout = B_INFINITE_TIMEOUT);
+ status_t RequestError(); /* return last RequestBuffer error, useful if NULL is returned */
+
+ status_t CountBuffers(
+ int32 * out_count);
+ status_t GetBufferList(
+ int32 buf_count,
+ BBuffer ** out_buffers);
+
+ status_t WaitForBuffers();
+ status_t ReclaimAllBuffers();
+
+private:
+ /* in BeOS R5 this is a deprecated api, from BeOS R4 times */
+ status_t AddBuffersTo(BMessage * message, const char * name, bool needLock=true);
+
+ status_t InitBufferGroup(); /* used internally */
+ BBufferGroup(const BBufferGroup &); /* not implemented */
+ BBufferGroup& operator=(const BBufferGroup&); /* not implemented */
+
+ friend struct _shared_buffer_list;
+
+ status_t fInitError;
+ status_t fRequestError;
+ int32 fBufferCount;
+ _shared_buffer_list * fBufferList;
+
+ // this is a BBufferGroup specific semaphore used for reclaiming BBuffers of this group
+ // is also is a system wide unique identifier of this group
+ sem_id fReclaimSem;
+
+ uint32 _reserved_buffer_group_[9];
+};
+
+#endif /* _BUFFER_GROUP_H */
+
diff --git a/headers/os/media/BufferProducer.h b/headers/os/media/BufferProducer.h
new file mode 100644
index 0000000000..6016d75f2a
--- /dev/null
+++ b/headers/os/media/BufferProducer.h
@@ -0,0 +1,239 @@
+/*******************************************************************************
+/
+/ File: BBufferProducer.h
+/
+/ Description: A BBufferProducer is any source of media buffers in the Media Kit
+/
+/ Copyright 1997-98, Be Incorporated, All Rights Reserved
+/
+*******************************************************************************/
+
+#if !defined(_BUFFER_PRODUCER_H)
+#define _BUFFER_PRODUCER_H
+
+#include
+#include
+
+
+class BBufferProducer :
+ public virtual BMediaNode
+{
+protected:
+ /* this has to be at the top to force a vtable */
+virtual ~BBufferProducer();
+
+public:
+
+ /* Supported formats for low-level clipping data */
+ enum {
+ B_CLIP_SHORT_RUNS = 1
+ };
+
+ /* Handy conversion functions for dealing with clip information */
+static status_t ClipDataToRegion(
+ int32 format,
+ int32 size,
+ const void * data,
+ BRegion * region);
+
+ media_type ProducerType();
+
+protected:
+explicit BBufferProducer(
+ media_type producer_type /* = B_MEDIA_UNKNOWN_TYPE */);
+
+ enum suggestion_quality {
+ B_ANY_QUALITY = 0,
+ B_LOW_QUALITY = 10,
+ B_MEDIUM_QUALITY = 50,
+ B_HIGH_QUALITY = 100
+ };
+
+ /* functionality of BBufferProducer */
+virtual status_t FormatSuggestionRequested(
+ media_type type,
+ int32 quality,
+ media_format * format) = 0;
+virtual status_t FormatProposal(
+ const media_source & output,
+ media_format * format) = 0;
+ /* If the format isn't good, put a good format into *io_format and return error */
+ /* If format has wildcard, specialize to what you can do (and change). */
+ /* If you can change the format, return OK. */
+ /* The request comes from your destination sychronously, so you cannot ask it */
+ /* whether it likes it -- you should assume it will since it asked. */
+virtual status_t FormatChangeRequested(
+ const media_source & source,
+ const media_destination & destination,
+ media_format * io_format,
+ int32 * _deprecated_) = 0;
+virtual status_t GetNextOutput( /* cookie starts as 0 */
+ int32 * cookie,
+ media_output * out_output) = 0;
+virtual status_t DisposeOutputCookie(
+ int32 cookie) = 0;
+ /* In this function, you should either pass on the group to your upstream guy, */
+ /* or delete your current group and hang on to this group. Deleting the previous */
+ /* group (unless you passed it on with the reclaim flag set to false) is very */
+ /* important, else you will 1) leak memory and 2) block someone who may want */
+ /* to reclaim the buffers living in that group. */
+virtual status_t SetBufferGroup(
+ const media_source & for_source,
+ BBufferGroup * group) = 0;
+ /* Format of clipping is (as int16-s): . */
+ /* Repeat for each line where the clipping is different from the previous line. */
+ /* If is negative, use the data from line - (there are 0 pairs after */
+ /* a negative . Yes, we only support 32k*32k frame buffers for clipping. */
+ /* Any non-0 field of 'display' means that that field changed, and if you don't support */
+ /* that change, you should return an error and ignore the request. Note that the buffer */
+ /* offset values do not have wildcards; 0 (or -1, or whatever) are real values and must */
+ /* be adhered to. */
+virtual status_t VideoClippingChanged(
+ const media_source & for_source,
+ int16 num_shorts,
+ int16 * clip_data,
+ const media_video_display_info & display,
+ int32 * _deprecated_);
+ /* Iterates over all outputs and maxes the latency found */
+virtual status_t GetLatency(
+ bigtime_t * out_lantency);
+virtual status_t PrepareToConnect(
+ const media_source & what,
+ const media_destination & where,
+ media_format * format,
+ media_source * out_source,
+ char * out_name) = 0;
+virtual void Connect(
+ status_t error,
+ const media_source & source,
+ const media_destination & destination,
+ const media_format & format,
+ char * io_name) = 0;
+virtual void Disconnect(
+ const media_source & what,
+ const media_destination & where) = 0;
+virtual void LateNoticeReceived(
+ const media_source & what,
+ bigtime_t how_much,
+ bigtime_t performance_time) = 0;
+virtual void EnableOutput(
+ const media_source & what,
+ bool enabled,
+ int32 * _deprecated_) = 0;
+virtual status_t SetPlayRate(
+ int32 numer,
+ int32 denom);
+
+virtual status_t HandleMessage( /* call this from the thread that listens to the port */
+ int32 message,
+ const void * data,
+ size_t size);
+
+virtual void AdditionalBufferRequested( // used to be Reserved 0
+ const media_source & source,
+ media_buffer_id prev_buffer,
+ bigtime_t prev_time,
+ const media_seek_tag * prev_tag); // may be NULL
+
+virtual void LatencyChanged( // used to be Reserved 1
+ const media_source & source,
+ const media_destination & destination,
+ bigtime_t new_latency,
+ uint32 flags);
+
+ /* Use this function in BBufferProducer to pass on the buffer. */
+ status_t SendBuffer(
+ BBuffer * buffer,
+ const media_destination & destination);
+
+ status_t SendDataStatus(
+ int32 status,
+ const media_destination & destination,
+ bigtime_t at_time);
+
+ /* Check in advance if a target is prepared to accept a format. You may */
+ /* want to call this from Connect(), although that's not required. */
+ status_t ProposeFormatChange(
+ media_format * format,
+ const media_destination & for_destination);
+ /* Tell consumer to accept a proposed format change */
+ /* YOU MUST NOT CALL BROADCAST_BUFFER WHILE THIS CALL IS OUTSTANDING! */
+ status_t ChangeFormat(
+ const media_source & for_source,
+ const media_destination & for_destination,
+ media_format * format);
+ /* Check how much latency the down-stream graph introduces */
+ status_t FindLatencyFor(
+ const media_destination & for_destination,
+ bigtime_t * out_latency,
+ media_node_id * out_timesource);
+
+ /* Find the tag of a previously seen buffer to expedite seeking */
+ status_t FindSeekTag(
+ const media_destination & for_destination,
+ bigtime_t in_target_time,
+ media_seek_tag * out_tag,
+ bigtime_t * out_tagged_time,
+ uint32 * out_flags = 0,
+ uint32 in_flags = 0);
+
+ /* Set the initial latency, which is the maximum additional latency */
+ /* that will be imposed while starting/syncing to a signal (such as */
+ /* starting a TV capture card in the middle of a field). Most nodes */
+ /* have this at 0 (the default); only TV input Nodes need it currently */
+ /* because they slave to a low-resolution (59.94 Hz) clock that arrives */
+ /* from the outside world. Call this from the constructor if you need it. */
+ void SetInitialLatency(
+ bigtime_t inInitialLatency,
+ uint32 flags = 0);
+
+private:
+
+ friend class BMediaRoster;
+ friend class BBufferConsumer;
+ friend class BMediaNode;
+
+ BBufferProducer(); /* private unimplemented */
+ BBufferProducer(
+ const BBufferProducer & clone);
+ BBufferProducer & operator=(
+ const BBufferProducer & clone);
+
+ /* Mmmh, stuffing! */
+ status_t _Reserved_BufferProducer_0(void *); /* AdditionalBufferRequested() */
+ status_t _Reserved_BufferProducer_1(void *); /* LatencyChanged() */
+virtual status_t _Reserved_BufferProducer_2(void *);
+virtual status_t _Reserved_BufferProducer_3(void *);
+virtual status_t _Reserved_BufferProducer_4(void *);
+virtual status_t _Reserved_BufferProducer_5(void *);
+virtual status_t _Reserved_BufferProducer_6(void *);
+virtual status_t _Reserved_BufferProducer_7(void *);
+virtual status_t _Reserved_BufferProducer_8(void *);
+virtual status_t _Reserved_BufferProducer_9(void *);
+virtual status_t _Reserved_BufferProducer_10(void *);
+virtual status_t _Reserved_BufferProducer_11(void *);
+virtual status_t _Reserved_BufferProducer_12(void *);
+virtual status_t _Reserved_BufferProducer_13(void *);
+virtual status_t _Reserved_BufferProducer_14(void *);
+virtual status_t _Reserved_BufferProducer_15(void *);
+
+
+ media_type fProducerType;
+ bigtime_t fInitialLatency;
+ uint32 fInitialFlags;
+
+static status_t clip_shorts_to_region(
+ const int16 * data,
+ int count,
+ BRegion * output);
+static status_t clip_region_to_shorts(
+ const BRegion * input,
+ int16 * data,
+ int max_count,
+ int * out_count);
+
+ uint32 _reserved_buffer_producer_[14];
+};
+
+#endif /* _BUFFER_PRODUCER_H */
+
diff --git a/headers/os/media/Controllable.h b/headers/os/media/Controllable.h
new file mode 100644
index 0000000000..b99339f5e9
--- /dev/null
+++ b/headers/os/media/Controllable.h
@@ -0,0 +1,139 @@
+/*******************************************************************************
+/
+/ File: Controllable.h
+/
+/ Description: A BControllable is a BMediaNode with "tweakable" parameters/settings.
+/
+/ Copyright 1997-98, Be Incorporated, All Rights Reserved
+/
+*******************************************************************************/
+
+#if !defined(_CONTROLLABLE_H)
+#define _CONTROLLABLE_H
+
+#include
+#include
+
+class BParameterWeb;
+
+
+class BControllable :
+ public virtual BMediaNode
+{
+protected:
+ /* Need this to force vtable */
+virtual ~BControllable();
+
+public:
+
+ /* BControllable might seem somewhat spartan. */
+
+ /* That is because control change requests and notifications */
+ /* typically come in/go out in B_MEDIA_PARAMETERS type buffers */
+ /* (and a BControllable thus also needs to be a BBufferConsumer */
+ /* and/or a BBufferProducer) */
+ /* The format of these buffers is: */
+ /* media_node(node), int32(count) */
+ /* repeat(count) { int64(when), int32(control_id), int32(value_size), } */
+
+ BParameterWeb * Web();
+ bool LockParameterWeb();
+ void UnlockParameterWeb();
+
+protected:
+
+ BControllable(); /* call SetParameterWeb() from your constructor */
+ status_t SetParameterWeb(
+ BParameterWeb * web);
+
+virtual status_t HandleMessage(
+ int32 message,
+ const void * data,
+ size_t size);
+
+ /* Call when the actual control changes, NOT when the value changes. */
+ /* A typical case would be a CD with a Selector for Track when a new CD is inserted */
+ status_t BroadcastChangedParameter(
+ int32 id);
+
+ /* Call this function when a value change takes effect, and */
+ /* you want people who are interested to stay in sync with you. */
+ /* Don't call this too densely, though, or you will flood the system */
+ /* with messages. */
+ status_t BroadcastNewParameterValue(
+ bigtime_t when, // performance time
+ int32 id, // parameter ID
+ void * newValue,
+ size_t valueSize);
+
+ /* These are alternate methods of accomplishing the same thing as */
+ /* connecting to control information source/destinations would. */
+virtual status_t GetParameterValue(
+ int32 id,
+ bigtime_t * last_change,
+ void * value,
+ size_t * ioSize) = 0;
+virtual void SetParameterValue(
+ int32 id,
+ bigtime_t when,
+ const void * value,
+ size_t size) = 0;
+
+ /* The default implementation of StartControlPanel launches the add-on */
+ /* as an application (if the Node lives in an add-on). Thus, you can write your */
+ /* control panel as a "main()" in your add-on, and it'll automagically work! */
+ /* Your add-on needs to have multi-launch app flags for this to work right. */
+ /* The first argv argument to main() will be a string of the format "node=%d" */
+ /* with the node ID in question as "%d". */
+virtual status_t StartControlPanel(
+ BMessenger * out_messenger);
+
+ /* Call this from your BufferReceived() for control information buffers */
+ /* if you implement BBufferConsumer for that format (recommended!) */
+ status_t ApplyParameterData(
+ const void * value,
+ size_t size);
+ /* If you want to generate control information for a set of controls, you */
+ /* can use this utility function. */
+ status_t MakeParameterData(
+ const int32 * controls,
+ int32 count,
+ void * buf,
+ size_t * ioSize);
+
+private:
+
+ friend class BMediaNode;
+
+ BControllable( /* private unimplemented */
+ const BControllable & clone);
+ BControllable & operator=(
+ const BControllable & clone);
+
+ /* Mmmh, stuffing! */
+virtual status_t _Reserved_Controllable_0(void *);
+virtual status_t _Reserved_Controllable_1(void *);
+virtual status_t _Reserved_Controllable_2(void *);
+virtual status_t _Reserved_Controllable_3(void *);
+virtual status_t _Reserved_Controllable_4(void *);
+virtual status_t _Reserved_Controllable_5(void *);
+virtual status_t _Reserved_Controllable_6(void *);
+virtual status_t _Reserved_Controllable_7(void *);
+virtual status_t _Reserved_Controllable_8(void *);
+virtual status_t _Reserved_Controllable_9(void *);
+virtual status_t _Reserved_Controllable_10(void *);
+virtual status_t _Reserved_Controllable_11(void *);
+virtual status_t _Reserved_Controllable_12(void *);
+virtual status_t _Reserved_Controllable_13(void *);
+virtual status_t _Reserved_Controllable_14(void *);
+virtual status_t _Reserved_Controllable_15(void *);
+
+ BParameterWeb * _mWeb;
+ sem_id _m_webSem;
+ int32 _m_webBen;
+ uint32 _reserved_controllable_[14];
+};
+
+
+#endif /* _CONTROLLABLE_H */
+
diff --git a/headers/os/media/FileInterface.h b/headers/os/media/FileInterface.h
new file mode 100644
index 0000000000..aacba0099d
--- /dev/null
+++ b/headers/os/media/FileInterface.h
@@ -0,0 +1,91 @@
+/*******************************************************************************
+/
+/ File: FileInterface.h
+/
+/ Description: A BFileInterface is something which can read and/or write files for the
+/ use of other Media Kit participants.
+/
+/ Copyright 1997-98, Be Incorporated, All Rights Reserved
+/
+*******************************************************************************/
+
+#if !defined(_FILE_INTERFACE_H)
+#define _FILE_INTERFACE_H
+
+#include
+#include
+
+
+class BFileInterface :
+ public virtual BMediaNode
+{
+protected:
+
+virtual ~BFileInterface(); /* force vtable */
+
+public:
+
+ /* look, no hands! */
+
+protected:
+
+ BFileInterface();
+virtual status_t HandleMessage(
+ int32 message,
+ const void * data,
+ size_t size);
+
+virtual status_t GetNextFileFormat(
+ int32 * cookie,
+ media_file_format * out_format) = 0;
+virtual void DisposeFileFormatCookie(
+ int32 cookie) = 0;
+
+virtual status_t GetDuration(
+ bigtime_t * out_time) = 0;
+virtual status_t SniffRef(
+ const entry_ref & file,
+ char * out_mime_type, /* 256 bytes */
+ float * out_quality) = 0;
+virtual status_t SetRef(
+ const entry_ref & file,
+ bool create,
+ bigtime_t * out_time) = 0;
+virtual status_t GetRef(
+ entry_ref * out_ref,
+ char * out_mime_type) = 0;
+
+private:
+
+ friend class BMediaNode;
+
+ BFileInterface( /* private unimplemented */
+ const BFileInterface & clone);
+ BFileInterface & operator=(
+ const BFileInterface & clone);
+
+ /* Mmmh, stuffing! */
+virtual status_t _Reserved_FileInterface_0(void *);
+virtual status_t _Reserved_FileInterface_1(void *);
+virtual status_t _Reserved_FileInterface_2(void *);
+virtual status_t _Reserved_FileInterface_3(void *);
+virtual status_t _Reserved_FileInterface_4(void *);
+virtual status_t _Reserved_FileInterface_5(void *);
+virtual status_t _Reserved_FileInterface_6(void *);
+virtual status_t _Reserved_FileInterface_7(void *);
+virtual status_t _Reserved_FileInterface_8(void *);
+virtual status_t _Reserved_FileInterface_9(void *);
+virtual status_t _Reserved_FileInterface_10(void *);
+virtual status_t _Reserved_FileInterface_11(void *);
+virtual status_t _Reserved_FileInterface_12(void *);
+virtual status_t _Reserved_FileInterface_13(void *);
+virtual status_t _Reserved_FileInterface_14(void *);
+virtual status_t _Reserved_FileInterface_15(void *);
+
+ uint32 _reserved_file_interface_[16];
+
+};
+
+
+#endif /* _FILE_INTERFACE_H */
+
diff --git a/headers/os/media/MediaAddOn.h b/headers/os/media/MediaAddOn.h
new file mode 100644
index 0000000000..3847272747
--- /dev/null
+++ b/headers/os/media/MediaAddOn.h
@@ -0,0 +1,174 @@
+/*******************************************************************************
+/
+/ File: MediaAddOn.h
+/
+/ Description: A BMediaAddOn is created by Media Kit add-ons to instantiate and
+/ handle "latent" Nodes.
+/
+/ Copyright 1997-98, Be Incorporated, All Rights Reserved
+/
+*******************************************************************************/
+
+#if !defined(_MEDIA_ADD_ON_H)
+#define _MEDIA_ADD_ON_H
+
+#include
+
+#include
+#include
+
+
+struct dormant_node_info {
+ dormant_node_info();
+ ~dormant_node_info();
+
+ media_addon_id addon;
+ int32 flavor_id;
+ char name[B_MEDIA_NAME_LENGTH];
+private:
+ char reserved[128];
+};
+
+
+
+enum
+{ // flavor_flags
+ B_FLAVOR_IS_GLOBAL = 0x100000L, // force in media_addon_server, only one instance
+ B_FLAVOR_IS_LOCAL = 0x200000L // force in loading app, many instances
+ // if none is set, could go either way
+};
+
+struct flavor_info {
+ char * name;
+ char * info;
+ uint64 kinds; /* node_kind */
+ uint32 flavor_flags;
+ int32 internal_id; /* For BMediaAddOn internal use */
+ int32 possible_count; /* 0 for "any number" */
+
+ int32 in_format_count; /* for BufferConsumer kinds */
+ uint32 in_format_flags; /* set to 0 */
+ const media_format * in_formats;
+
+ int32 out_format_count; /* for BufferProducer kinds */
+ uint32 out_format_flags; /* set to 0 */
+ const media_format * out_formats;
+
+ uint32 _reserved_[16];
+
+private:
+ flavor_info & operator=(const flavor_info & other);
+};
+
+struct dormant_flavor_info : public flavor_info, public BFlattenable {
+
+ dormant_flavor_info();
+virtual ~dormant_flavor_info();
+ dormant_flavor_info(const dormant_flavor_info &);
+ dormant_flavor_info& operator=(const dormant_flavor_info &);
+ dormant_flavor_info& operator=(const flavor_info &);
+
+ dormant_node_info node_info;
+
+ void set_name(const char * in_name);
+ void set_info(const char * in_info);
+ void add_in_format(const media_format & in_format);
+ void add_out_format(const media_format & out_format);
+
+virtual bool IsFixedSize() const;
+virtual type_code TypeCode() const;
+virtual ssize_t FlattenedSize() const;
+virtual status_t Flatten(void *buffer, ssize_t size) const;
+virtual status_t Unflatten(type_code c, const void *buf, ssize_t size);
+};
+
+
+
+/* a MediaAddOn is something which can manufacture MediaNodes */
+class BMediaAddOn
+{
+public:
+explicit BMediaAddOn(
+ image_id image);
+virtual ~BMediaAddOn();
+
+virtual status_t InitCheck(
+ const char ** out_failure_text);
+virtual int32 CountFlavors();
+virtual status_t GetFlavorAt(
+ int32 n,
+ const flavor_info ** out_info);
+virtual BMediaNode * InstantiateNodeFor(
+ const flavor_info * info,
+ BMessage * config,
+ status_t * out_error);
+virtual status_t GetConfigurationFor(
+ BMediaNode * your_node,
+ BMessage * into_message);
+virtual bool WantsAutoStart();
+virtual status_t AutoStart(
+ int in_count,
+ BMediaNode ** out_node,
+ int32 * out_internal_id,
+ bool * out_has_more);
+/* only implement if you have a B_FILE_INTERFACE node */
+virtual status_t SniffRef(
+ const entry_ref & file,
+ BMimeType * io_mime_type,
+ float * out_quality,
+ int32 * out_internal_id);
+virtual status_t SniffType( // This is broken if you deal with producers
+ const BMimeType & type, // and consumers both. Use SniffTypeKind instead.
+ float * out_quality, // If you implement SniffTypeKind, this doesn't
+ int32 * out_internal_id); // get called.
+virtual status_t GetFileFormatList(
+ int32 flavor_id, // for this node flavor (if it matters)
+ media_file_format * out_writable_formats, // don't write here if NULL
+ int32 in_write_items, // this many slots in out_writable_formats
+ int32 * out_write_items, // set this to actual # available, even if bigger than in count
+ media_file_format * out_readable_formats, // don't write here if NULL
+ int32 in_read_items, // this many slots in out_readable_formats
+ int32 * out_read_items, // set this to actual # available, even if bigger than in count
+ void * _reserved); // ignore until further notice
+virtual status_t SniffTypeKind( // Like SniffType, but for the specific kind(s)
+ const BMimeType & type,
+ uint64 in_kinds,
+ float * out_quality,
+ int32 * out_internal_id,
+ void * _reserved);
+
+ image_id ImageID();
+ media_addon_id AddonID();
+
+protected:
+
+ // Calling this will cause everyone to get notified, and also
+ // cause the server to re-scan your flavor info. It is thread safe.
+ status_t NotifyFlavorChange();
+
+private:
+ BMediaAddOn(); /* private unimplemented */
+ BMediaAddOn(const BMediaAddOn & clone);
+ BMediaAddOn & operator=(const BMediaAddOn & clone);
+
+ /* Mmmh, stuffing! */
+virtual status_t _Reserved_MediaAddOn_2(void *);
+virtual status_t _Reserved_MediaAddOn_3(void *);
+virtual status_t _Reserved_MediaAddOn_4(void *);
+virtual status_t _Reserved_MediaAddOn_5(void *);
+virtual status_t _Reserved_MediaAddOn_6(void *);
+virtual status_t _Reserved_MediaAddOn_7(void *);
+
+ image_id _fImage;
+ media_addon_id _fAddon;
+ uint32 _reserved_media_add_on_[7];
+};
+
+
+#if BUILDING_MEDIA_ADDON
+extern "C" _EXPORT BMediaAddOn * make_media_addon(image_id you);
+#endif
+
+
+#endif /* _MEDIA_ADD_ON_H */
+
diff --git a/headers/os/media/MediaDecoder.h b/headers/os/media/MediaDecoder.h
new file mode 100644
index 0000000000..12748810f0
--- /dev/null
+++ b/headers/os/media/MediaDecoder.h
@@ -0,0 +1,90 @@
+#ifndef MEDIADECODER_H
+#define MEDIADECODER_H
+
+#include
+#include
+
+namespace BPrivate {
+ class Decoder;
+}
+
+class BMediaDecoder {
+ public:
+ BMediaDecoder();
+ BMediaDecoder(const media_format *in_format,
+ const void *info = NULL, size_t info_size = 0);
+ BMediaDecoder(const media_codec_info *mci);
+ virtual ~BMediaDecoder();
+ status_t InitCheck() const;
+
+ status_t SetTo(const media_format *in_format,
+ const void *info = NULL, size_t info_size = 0);
+ status_t SetTo(const media_codec_info *mci);
+ status_t SetInputFormat(const media_format *in_format,
+ const void *in_info = NULL, size_t in_size = 0);
+ status_t SetOutputFormat(media_format *output_format);
+ // Set output format to closest acceptable format, returns the
+ // format used.
+ status_t Decode(void *out_buffer, int64 *out_frameCount,
+ media_header *out_mh, media_decode_info *info);
+ status_t GetDecoderInfo(media_codec_info *out_info) const;
+
+ protected:
+ virtual status_t GetNextChunk(const void **chunkData, size_t *chunkLen,
+ media_header *mh) = 0;
+
+ private:
+
+ // unimplemented
+ BMediaDecoder(const BMediaDecoder &);
+ BMediaDecoder & operator=(const BMediaDecoder &);
+
+ static status_t next_chunk(void *classptr, void **chunkData, size_t *chunkLen, media_header *mh);
+ void ReleaseDecoder();
+
+ BPrivate::Decoder *fDecoder;
+ int32 fDecoderID;
+ status_t fInitStatus;
+
+
+ /* fbc data and virtuals */
+
+ uint32 _reserved_BMediaDecoder_[32];
+
+ virtual status_t _Reserved_BMediaDecoder_0(int32 arg, ...);
+ virtual status_t _Reserved_BMediaDecoder_1(int32 arg, ...);
+ virtual status_t _Reserved_BMediaDecoder_2(int32 arg, ...);
+ virtual status_t _Reserved_BMediaDecoder_3(int32 arg, ...);
+ virtual status_t _Reserved_BMediaDecoder_4(int32 arg, ...);
+ virtual status_t _Reserved_BMediaDecoder_5(int32 arg, ...);
+ virtual status_t _Reserved_BMediaDecoder_6(int32 arg, ...);
+ virtual status_t _Reserved_BMediaDecoder_7(int32 arg, ...);
+ virtual status_t _Reserved_BMediaDecoder_8(int32 arg, ...);
+ virtual status_t _Reserved_BMediaDecoder_9(int32 arg, ...);
+ virtual status_t _Reserved_BMediaDecoder_10(int32 arg, ...);
+ virtual status_t _Reserved_BMediaDecoder_11(int32 arg, ...);
+ virtual status_t _Reserved_BMediaDecoder_12(int32 arg, ...);
+ virtual status_t _Reserved_BMediaDecoder_13(int32 arg, ...);
+ virtual status_t _Reserved_BMediaDecoder_14(int32 arg, ...);
+ virtual status_t _Reserved_BMediaDecoder_15(int32 arg, ...);
+};
+
+class BMediaBufferDecoder : public BMediaDecoder {
+ public:
+ BMediaBufferDecoder();
+ BMediaBufferDecoder(const media_format *in_format,
+ const void *info = NULL, size_t info_size = 0);
+ BMediaBufferDecoder(const media_codec_info *mci);
+ status_t DecodeBuffer(const void *input_buffer, size_t input_size,
+ void *out_buffer, int64 *out_frameCount,
+ media_header *out_mh,
+ media_decode_info *info = NULL);
+ protected:
+ virtual status_t GetNextChunk(const void **chunkData, size_t *chunkLen,
+ media_header *mh);
+ const void *buffer;
+ int32 buffer_size;
+};
+
+#endif
+
diff --git a/headers/os/media/MediaDefs.h b/headers/os/media/MediaDefs.h
new file mode 100644
index 0000000000..3554af3141
--- /dev/null
+++ b/headers/os/media/MediaDefs.h
@@ -0,0 +1,736 @@
+/*******************************************************************************
+/
+/ File: MediaDefs.h
+/
+/ Description: Basic data types and defines for the Media Kit.
+/
+/ Copyright 1997-1999, Be Incorporated, All Rights Reserved
+/
+*******************************************************************************/
+
+#if !defined(_MEDIA_DEFS_H)
+#define _MEDIA_DEFS_H
+
+#include
+#include
+#include
+#include
+
+#if defined(__cplusplus)
+#include
+#include
+#endif
+
+
+#define B_MEDIA_NAME_LENGTH 64
+
+
+enum { /* maybe migrate these into Errors.h */
+ B_MEDIA_SYSTEM_FAILURE = (int)B_MEDIA_ERROR_BASE+0x100, /* 80004100 */
+ B_MEDIA_BAD_NODE,
+ B_MEDIA_NODE_BUSY,
+ B_MEDIA_BAD_FORMAT,
+ B_MEDIA_BAD_BUFFER,
+ B_MEDIA_TOO_MANY_NODES,
+ B_MEDIA_TOO_MANY_BUFFERS,
+ B_MEDIA_NODE_ALREADY_EXISTS,
+ B_MEDIA_BUFFER_ALREADY_EXISTS,
+ B_MEDIA_CANNOT_SEEK,
+ B_MEDIA_CANNOT_CHANGE_RUN_MODE,
+ B_MEDIA_APP_ALREADY_REGISTERED,
+ B_MEDIA_APP_NOT_REGISTERED,
+ B_MEDIA_CANNOT_RECLAIM_BUFFERS,
+ B_MEDIA_BUFFERS_NOT_RECLAIMED,
+ B_MEDIA_TIME_SOURCE_STOPPED,
+ B_MEDIA_TIME_SOURCE_BUSY, /* 80004110 */
+ B_MEDIA_BAD_SOURCE,
+ B_MEDIA_BAD_DESTINATION,
+ B_MEDIA_ALREADY_CONNECTED,
+ B_MEDIA_NOT_CONNECTED,
+ B_MEDIA_BAD_CLIP_FORMAT,
+ B_MEDIA_ADDON_FAILED,
+ B_MEDIA_ADDON_DISABLED,
+ B_MEDIA_CHANGE_IN_PROGRESS,
+ B_MEDIA_STALE_CHANGE_COUNT,
+ B_MEDIA_ADDON_RESTRICTED,
+ B_MEDIA_NO_HANDLER,
+ B_MEDIA_DUPLICATE_FORMAT,
+ B_MEDIA_REALTIME_DISABLED,
+ B_MEDIA_REALTIME_UNAVAILABLE
+};
+
+/* Notification message 'what's */
+enum {
+ // Note that BMediaNode::node_error also belongs in here! */
+ B_MEDIA_WILDCARD = 'TRWC', /* used to match any notification in Start/StopWatching */
+ B_MEDIA_NODE_CREATED = 'TRIA', /* "media_node_id" (multiple items) */
+ B_MEDIA_NODE_DELETED, /* "media_node_id" (multiple items) */
+ B_MEDIA_CONNECTION_MADE, /* "output", "input", "format" */
+ B_MEDIA_CONNECTION_BROKEN, /* "source", "destination" */
+ B_MEDIA_BUFFER_CREATED, /* "clone_info" -- handled by BMediaRoster */
+ B_MEDIA_BUFFER_DELETED, /* "media_buffer_id" -- handled by BMediaRoster */
+ B_MEDIA_TRANSPORT_STATE, /* "state", "location", "realtime" */
+ B_MEDIA_PARAMETER_CHANGED, /* N "node", "parameter" */
+ B_MEDIA_FORMAT_CHANGED, /* N "source", "destination", "format" */
+ B_MEDIA_WEB_CHANGED, /* N "node" */
+ B_MEDIA_DEFAULT_CHANGED, /* "default", "node" -- handled by BMediaRoster */
+ B_MEDIA_NEW_PARAMETER_VALUE, /* N "node", "parameter", "when", "value" */
+ B_MEDIA_NODE_STOPPED, /* N "node", "when" */
+ B_MEDIA_FLAVORS_CHANGED /* "be:addon_id", "be:new_count", "be:gone_count" */
+};
+
+enum media_type {
+ B_MEDIA_NO_TYPE = -1,
+ B_MEDIA_UNKNOWN_TYPE = 0,
+ B_MEDIA_RAW_AUDIO = 1, /* uncompressed raw_audio -- linear relationship bytes <-> samples */
+ B_MEDIA_RAW_VIDEO, /* uncompressed raw_video -- linear relationship bytes <-> pixels */
+ B_MEDIA_VBL, /* raw data from VBL area, 1600/line */
+ B_MEDIA_TIMECODE, /* data format TBD */
+ B_MEDIA_MIDI,
+ B_MEDIA_TEXT, /* typically closed captioning */
+ B_MEDIA_HTML,
+ B_MEDIA_MULTISTREAM, /* AVI, etc */
+ B_MEDIA_PARAMETERS, /* BControllable change data */
+ B_MEDIA_ENCODED_AUDIO, /* dts, AC3, ... */
+ B_MEDIA_ENCODED_VIDEO, /* Indeo, MPEG, ... */
+ B_MEDIA_PRIVATE = 90000, /* Don't touch! */
+ B_MEDIA_FIRST_USER_TYPE = 100000 /* Use something bigger than this for */
+ /* experimentation with your own media forms */
+};
+
+enum node_kind {
+ B_BUFFER_PRODUCER = 0x1,
+ B_BUFFER_CONSUMER = 0x2,
+ B_TIME_SOURCE = 0x4,
+ B_CONTROLLABLE = 0x8,
+ B_FILE_INTERFACE = 0x10,
+ B_ENTITY_INTERFACE = 0x20,
+ /* Set these flags for nodes that are suitable as default entities */
+ B_PHYSICAL_INPUT = 0x10000,
+ B_PHYSICAL_OUTPUT = 0x20000,
+ B_SYSTEM_MIXER = 0x40000
+};
+
+enum video_orientation { /* for orientation, which pixel is first and how do we scan each "line"? */
+ B_VIDEO_TOP_LEFT_RIGHT = 1, /* This is the typical progressive scan format */
+ B_VIDEO_BOTTOM_LEFT_RIGHT /* This is how BMP and TGA might scan */
+};
+
+
+enum media_flags /* data */
+{
+ B_MEDIA_FLAGS_VERSION = 1, /* uint32, bigger for newer */
+ B_MEDIA_FLAGS_PRIVATE = 0x40000000 /* private to Be */
+};
+
+
+enum media_producer_status { /* for producer status */
+ B_DATA_NOT_AVAILABLE = 1,
+ B_DATA_AVAILABLE = 2,
+ B_PRODUCER_STOPPED = 3
+};
+
+// realtime flags
+enum media_realtime_flags {
+ B_MEDIA_REALTIME_ALLOCATOR = 0x1,
+ B_MEDIA_REALTIME_AUDIO = 0x2,
+ B_MEDIA_REALTIME_VIDEO = 0x4,
+ B_MEDIA_REALTIME_ANYKIND = 0xffff
+};
+
+enum media_frame_flags {
+ B_MEDIA_KEY_FRAME = 0x1
+};
+
+#define B_MEDIA_ANY_QUALITY 0.0f
+#define B_MEDIA_LOW_QUALITY 0.1f
+#define B_MEDIA_MEDIUM_QUALITY 0.5f
+#define B_MEDIA_HIGH_QUALITY 1.0f
+
+
+#if !defined(_MULTI_AUDIO_H) /* #define in protocol header */
+enum media_multi_channels {
+ B_CHANNEL_LEFT = 0x1,
+ B_CHANNEL_RIGHT = 0x2,
+ B_CHANNEL_CENTER = 0x4, /* 5.1+ or fake surround */
+ B_CHANNEL_SUB = 0x8, /* 5.1+ */
+ B_CHANNEL_REARLEFT = 0x10, /* quad surround or 5.1+ */
+ B_CHANNEL_REARRIGHT = 0x20, /* quad surround or 5.1+ */
+ B_CHANNEL_FRONT_LEFT_CENTER = 0x40,
+ B_CHANNEL_FRONT_RIGHT_CENTER = 0x80,
+ B_CHANNEL_BACK_CENTER = 0x100, /* 6.1 or fake surround */
+ B_CHANNEL_SIDE_LEFT = 0x200,
+ B_CHANNEL_SIDE_RIGHT = 0x400,
+ B_CHANNEL_TOP_CENTER = 0x800,
+ B_CHANNEL_TOP_FRONT_LEFT = 0x1000,
+ B_CHANNEL_TOP_FRONT_CENTER = 0x2000,
+ B_CHANNEL_TOP_FRONT_RIGHT = 0x4000,
+ B_CHANNEL_TOP_BACK_LEFT = 0x8000,
+ B_CHANNEL_TOP_BACK_CENTER = 0x10000,
+ B_CHANNEL_TOP_BACK_RIGHT = 0x20000
+};
+enum media_multi_matrix {
+ B_MATRIX_PROLOGIC_LR = 0x1,
+ B_MATRIX_AMBISONIC_WXYZ = 0x4
+};
+#endif
+
+
+typedef int32 media_node_id;
+typedef int32 media_buffer_id;
+typedef int32 media_addon_id;
+
+
+#if defined(__cplusplus)
+struct media_destination {
+ media_destination(port_id, int32);
+ media_destination(const media_destination & clone);
+ media_destination & operator=(const media_destination & clone);
+ media_destination();
+ ~media_destination();
+ port_id port; /* can be different from media_node.port */
+ int32 id;
+static media_destination null;
+private:
+ uint32 _reserved_media_destination_[2];
+};
+
+struct media_source {
+ media_source(port_id, int32);
+ media_source(const media_source & clone);
+ media_source & operator=(const media_source & clone);
+ media_source();
+ ~media_source();
+ port_id port; /* must be the same as media_node.port for owner */
+ int32 id;
+static media_source null;
+private:
+ uint32 _reserved_media_source_[2];
+};
+
+_IMPEXP_MEDIA bool operator==(const media_destination & a, const media_destination & b);
+_IMPEXP_MEDIA bool operator!=(const media_destination & a, const media_destination & b);
+_IMPEXP_MEDIA bool operator<(const media_destination & a, const media_destination & b);
+_IMPEXP_MEDIA bool operator==(const media_source & a, const media_source & b);
+_IMPEXP_MEDIA bool operator!=(const media_source & a, const media_source & b);
+_IMPEXP_MEDIA bool operator<(const media_source & a, const media_source & b);
+_IMPEXP_MEDIA bool operator==(const media_node & a, const media_node & b);
+_IMPEXP_MEDIA bool operator!=(const media_node & a, const media_node & b);
+_IMPEXP_MEDIA bool operator<(const media_node & a, const media_node & b);
+
+
+
+/* Buffers are low-level constructs identified by an ID. */
+/* Buffers consist of the actual data area, plus a 64-byte */
+/* header area that is different for each type. */
+/* Buffers contain typed data. Type is not part of the */
+/* buffer header; it's negotiated out-of-bounds by nodes. */
+
+enum {
+ B_MEDIA_BIG_ENDIAN = 1,
+ B_MEDIA_LITTLE_ENDIAN = 2,
+#if B_HOST_IS_BENDIAN
+ B_MEDIA_HOST_ENDIAN = B_MEDIA_BIG_ENDIAN
+#else
+ B_MEDIA_HOST_ENDIAN = B_MEDIA_LITTLE_ENDIAN
+#endif
+};
+
+struct media_multi_audio_format;
+
+struct media_raw_audio_format {
+ enum { // for "format"
+ B_AUDIO_FLOAT = 0x24, // 0 == mid, -1.0 == bottom, 1.0 == top (the preferred format for non-game audio)
+ B_AUDIO_INT = 0x4, // 0 == mid, 0x80000001 == bottom, 0x7fffffff == top (all >16-bit formats, left-adjusted)
+ B_AUDIO_SHORT = 0x2, // 0 == mid, -32767 == bottom, +32767 == top
+ B_AUDIO_UCHAR = 0x11, // 128 == mid, 1 == bottom, 255 == top (discouraged but supported format)
+ B_AUDIO_CHAR = 0x1, // 0 == mid, -127 == bottom, +127 == top (not officially supported format)
+ B_AUDIO_SIZE_MASK = 0xf
+ }; // we guarantee that (format&0xf) == sizeof(sample) for raw formats
+
+ float frame_rate;
+ uint32 channel_count; // 1 or 2, mostly
+ uint32 format; // for compressed formats, go to media_encoded_audio_format
+ uint32 byte_order; // 2 for little endian (B_MEDIA_LITTLE_ENDIAN), 1 for big endian (B_MEDIA_BIG_ENDIAN)
+ size_t buffer_size; // size of each buffer
+
+static media_multi_audio_format wildcard;
+};
+
+struct media_audio_header {
+ // please put actual data at the end
+ int32 _reserved_[16]; // gotta have something
+};
+
+struct media_multi_audio_info {
+ uint32 channel_mask; // bitmask
+ int16 valid_bits; // if < 32, for B_AUDIO_INT
+ uint16 matrix_mask; // each of these bits may mean more than one channel
+
+ uint32 _reserved_b[3];
+};
+
+#if defined(__cplusplus)
+struct media_multi_audio_format : public media_raw_audio_format, public media_multi_audio_info {
+static media_multi_audio_format wildcard;
+};
+#else
+struct media_multi_audio_format {
+ media_raw_audio_format raw;
+ media_multi_audio_info multi;
+};
+#endif
+
+
+struct media_encoded_audio_format {
+ enum audio_encoding {
+ B_ANY
+ };
+ media_raw_audio_format output;
+ audio_encoding encoding;
+
+ float bit_rate; // BIT rate, not byte rate
+ size_t frame_size;
+
+ media_multi_audio_info multi_info;
+
+ uint32 _reserved_[3];
+
+static media_encoded_audio_format wildcard;
+};
+
+struct media_encoded_audio_header {
+ // please put actual data at the end
+ int32 _reserved_0[14]; // gotta have something
+ uint32 buffer_flags; // B_MEDIA_KEY_FRAME for key buffers (ADPCM etc)
+ uchar unused_mask; // mask of unused bits for the last byte of data
+ uchar _reserved_2[3];
+
+};
+
+enum media_display_flags {
+ B_F1_DOMINANT = 0x1, // The first buffer sent (temporally) will be an F1 field
+ B_F2_DOMINANT = 0x2, // The first buffer sent (temporally) will be an F2 field
+ B_TOP_SCANLINE_F1 = 0x4, // The topmost scanline of the output buffer belongs to F1
+ B_TOP_SCANLINE_F2 = 0x8 // The topmost scanline of the output buffer belongs to F2
+};
+struct media_video_display_info {
+ color_space format;
+ uint32 line_width;
+ uint32 line_count; // total of all interlace fields
+ uint32 bytes_per_row; // bytes_per_row is in format, not header, because it's part of SetBuffers
+ uint32 pixel_offset; // (in pixels) ... These are offsets from the start of the buffer ...
+ uint32 line_offset; // (in lines) ... to the start of the field. Think "buffer == framebuffer" ...
+ // ... when the window displaying the active field moves on screen.
+ uint32 flags;
+ uint32 _reserved_[3];
+static media_video_display_info wildcard;
+};
+
+struct media_raw_video_format {
+ float field_rate;
+ uint32 interlace; // how many fields per frame -- 1 means progressive (non-interlaced)
+ uint32 first_active; // 0, typically (wildcard, or "don't care")
+ uint32 last_active; // line_count-1, if first_active is 0.
+ uint32 orientation; // B_VIDEO_TOP_LEFT_RIGHT is preferred
+ // PIXEL aspect ratio; not active area aspect ratio...
+ uint16 pixel_width_aspect; // 1:1 has 1 here, 4:3 has 4 here
+ uint16 pixel_height_aspect; // 1:1 has 1 here, 4:3 has 3 here
+
+ media_video_display_info display;
+
+static media_raw_video_format wildcard;
+};
+
+struct media_video_header {
+ uint32 _reserved_[12]; // at the top to push used data to the end
+ float field_gamma;
+ uint32 field_sequence; // sequence since start of capture -- may roll over if machine is on for a LONG time
+ uint16 field_number; // 0 .. {interlace-1}; F1 == 0 ("odd"), F2 == 1 ("even")
+ uint16 pulldown_number; // 0..2 for pulldown duplicated sequence
+ uint16 first_active_line; // the NTSC/PAL line number (1-based) of the first line in this field
+ uint16 line_count; // number of active lines in buffer
+};
+
+struct media_encoded_video_format {
+ enum video_encoding {
+ B_ANY
+ };
+ media_raw_video_format output; // set unknowns to wildcard
+ float avg_bit_rate;
+ float max_bit_rate;
+ video_encoding encoding;
+ size_t frame_size;
+ int16 forward_history; // maximum forward memory required by algorithm
+ int16 backward_history; // maximum backward memory required by algorithm
+
+ uint32 _reserved_[3]; // can't grow more than this
+
+static media_encoded_video_format wildcard;
+};
+
+struct media_encoded_video_header {
+ /* please put actual data at the end */
+ int32 _reserved_1[9]; // gotta have something...
+
+ uint32 field_flags; // B_MEDIA_KEY_FRAME
+
+ int16 forward_history; // forward memory required by this buffer (0 for key frames)
+ int16 backward_history; // backward memory required by this buffer (0 for key frames)
+ uchar unused_mask; // mask of unused bits for the last byte of data
+ uchar _reserved_2[3];
+ float field_gamma;
+ uint32 field_sequence; // sequence since start of capture
+ uint16 field_number; // 0 .. {interlace-1}; F1 == 0, F2 == 1
+ uint16 pulldown_number; // 0..2 for pulldown duplicated sequence
+ uint16 first_active_line; // 0 or 1, typically, but could be 10 or 11 for full-NTSC formats
+ uint16 line_count; // number of actual lines in buffer
+};
+
+struct media_multistream_format {
+ enum {
+ B_ANY = 0,
+ B_VID = 1, // raw raw_video/raw_audio buffers
+ B_AVI,
+ B_MPEG1,
+ B_MPEG2,
+ B_QUICKTIME,
+ B_PRIVATE = 90000,
+ B_FIRST_USER_TYPE = 100000 // user formats >= 100000
+ };
+ float avg_bit_rate; // 8 * byte rate, on average
+ float max_bit_rate; // 8 * byte rate, tops
+ uint32 avg_chunk_size; // == max_chunk_size for fixed-size chunks
+ uint32 max_chunk_size; // max buffer size
+ enum {
+ B_HEADER_HAS_FLAGS = 0x1, // are flags important?
+ B_CLEAN_BUFFERS = 0x2, // each buffer represents an integral number of "frames"
+ B_HOMOGENOUS_BUFFERS = 0x4 // a buffer has only one format in it
+ };
+ uint32 flags;
+ int32 format;
+ uint32 _reserved_[2];
+
+ struct vid_info {
+ float frame_rate;
+ uint16 width;
+ uint16 height;
+ color_space space;
+
+ float sampling_rate;
+ uint32 sample_format;
+ uint16 byte_order;
+ uint16 channel_count;
+ };
+ struct avi_info {
+ uint32 us_per_frame;
+ uint16 width;
+ uint16 height;
+ uint16 _reserved_;
+ uint16 type_count;
+ media_type types[5];
+ };
+
+ union {
+ vid_info vid;
+ avi_info avi;
+ } u;
+
+static media_multistream_format wildcard;
+};
+
+struct media_multistream_header {
+ uint32 _reserved_[14];
+ uchar unused_mask; // mask of unused bits for the last byte of data
+ uchar _reserved_2[3];
+ enum {
+ B_MASTER_HEADER = 0x1, // for master stream header data in buffer
+ B_SUBSTREAM_HEADER = 0x2, // for sub-stream header data in buffer
+ B_COMPLETE_BUFFER = 0x4 // data is an integral number of "frames"
+ };
+ uint32 flags;
+};
+
+extern const type_code B_CODEC_TYPE_INFO;
+
+enum media_format_flags {
+ B_MEDIA_RETAINED_DATA = 0x1,
+ B_MEDIA_MULTIPLE_BUFFERS = 0x2,
+ B_MEDIA_CONTIGUOUS_BUFFER = 0x4,
+ B_MEDIA_LINEAR_UPDATES = 0x8,
+ B_MEDIA_MAUI_UNDEFINED_FLAGS = ~0xf /* always deny these */
+};
+
+/* typically, a field of 0 means "anything" or "wildcard" */
+struct media_format { /* no more than 192 bytes */
+ media_type type;
+ type_code user_data_type;
+ uchar user_data[48];
+ uint32 _reserved_[3];
+ uint16 require_flags; // media_format_flags
+ uint16 deny_flags; // media_format_flags
+
+ private:
+
+ void * meta_data;
+ int32 meta_data_size;
+ area_id meta_data_area;
+ area_id use_area;
+ team_id team;
+ void * thisPtr;
+
+ public:
+
+ union {
+ media_multi_audio_format raw_audio;
+ media_raw_video_format raw_video;
+ media_multistream_format multistream;
+ media_encoded_audio_format encoded_audio;
+ media_encoded_video_format encoded_video;
+ char _reserved_[96]; // pad to 96 bytes
+ } u;
+
+ bool IsVideo() const { return (type==B_MEDIA_ENCODED_VIDEO)||(type==B_MEDIA_RAW_VIDEO); };
+ uint32 Width() const { return (type==B_MEDIA_ENCODED_VIDEO)?u.encoded_video.output.display.line_width:u.raw_video.display.line_width; };
+ uint32 Height() const { return (type==B_MEDIA_ENCODED_VIDEO)?u.encoded_video.output.display.line_count:u.raw_video.display.line_count; };
+ color_space ColorSpace() const { return (type==B_MEDIA_ENCODED_VIDEO)?u.encoded_video.output.display.format:u.raw_video.display.format; };
+ uint32 & Width() { return (type==B_MEDIA_ENCODED_VIDEO)?u.encoded_video.output.display.line_width:u.raw_video.display.line_width; };
+ uint32 & Height() { return (type==B_MEDIA_ENCODED_VIDEO)?u.encoded_video.output.display.line_count:u.raw_video.display.line_count; };
+ color_space & ColorSpace() { return (type==B_MEDIA_ENCODED_VIDEO)?u.encoded_video.output.display.format:u.raw_video.display.format; };
+
+ bool IsAudio() const { return (type==B_MEDIA_ENCODED_AUDIO)||(type==B_MEDIA_RAW_AUDIO); };
+ uint32 AudioFormat() const { return (type==B_MEDIA_ENCODED_AUDIO)?u.encoded_audio.output.format:u.raw_audio.format; };
+ uint32 & AudioFormat() { return (type==B_MEDIA_ENCODED_AUDIO)?u.encoded_audio.output.format:u.raw_audio.format; };
+
+ uint32 Encoding() const { return (type==B_MEDIA_ENCODED_VIDEO)?u.encoded_video.encoding:(type==B_MEDIA_ENCODED_AUDIO)?u.encoded_audio.encoding:(type==B_MEDIA_MULTISTREAM)?u.multistream.format:0UL; }
+
+ bool Matches(const media_format *otherFormat) const;
+ void SpecializeTo(const media_format *otherFormat);
+
+ status_t SetMetaData(const void *data, size_t size);
+ const void * MetaData() const;
+ int32 MetaDataSize() const;
+
+ media_format();
+ media_format(const media_format &other);
+ ~media_format();
+ media_format & operator=(const media_format & clone);
+};
+
+_IMPEXP_MEDIA bool operator==(const media_raw_audio_format & a, const media_raw_audio_format & b);
+_IMPEXP_MEDIA bool operator==(const media_multi_audio_info & a, const media_multi_audio_info & b);
+_IMPEXP_MEDIA bool operator==(const media_multi_audio_format & a, const media_multi_audio_format & b);
+_IMPEXP_MEDIA bool operator==(const media_encoded_audio_format & a, const media_encoded_audio_format & b);
+_IMPEXP_MEDIA bool operator==(const media_video_display_info & a, const media_video_display_info & b);
+_IMPEXP_MEDIA bool operator==(const media_raw_video_format & a, const media_raw_video_format & b);
+_IMPEXP_MEDIA bool operator==(const media_encoded_video_format & a, const media_encoded_video_format & b);
+_IMPEXP_MEDIA bool operator==(const media_multistream_format::vid_info & a, const media_multistream_format::vid_info & b);
+_IMPEXP_MEDIA bool operator==(const media_multistream_format::avi_info & a, const media_multistream_format::avi_info & b);
+_IMPEXP_MEDIA bool operator==(const media_multistream_format & a, const media_multistream_format & b);
+_IMPEXP_MEDIA bool operator==(const media_format & a, const media_format & b);
+
+/* return true if a and b are compatible (accounting for wildcards) */
+_IMPEXP_MEDIA bool format_is_compatible(const media_format & a, const media_format & b); /* a is the format you want to feed to something accepting b */
+_IMPEXP_MEDIA bool string_for_format(const media_format & f, char * buf, size_t size);
+
+struct media_seek_tag {
+ char data[16];
+};
+
+struct media_header_time_code {
+ int8 type; // See TimeCode.h; don't use the "DEFAULT" value
+ int8 _reserved;
+ int8 hours;
+ int8 minutes;
+ int8 seconds;
+ int8 frames;
+ int16 subframes; // -1 if not available
+};
+
+struct media_header { // Broadcast() fills in fields marked with "//+"
+ media_type type; // what kind of data (for union)
+ media_buffer_id buffer; //+ what buffer does this header go with?
+ int32 destination; //+ what 'socket' is this intended for?
+ media_node_id time_source; // node that encoded start_time
+ uint32 _deprecated_; // used to be change_tag
+ uint32 size_used; // size within buffer that is used
+ bigtime_t start_time; // performance time
+ area_id owner; //+ buffer owner info area
+ enum {
+ B_SEEK_TAG = 'TRST', // user data type of the codec seek
+ // protocol. size of seek tag is 16 bytes
+ B_TIME_CODE = 'TRTC' // user data is media_header_time_code
+ };
+ type_code user_data_type;
+ uchar user_data[64]; // user_data_type indicates what this is
+ uint32 _reserved_[2];
+
+ off_t file_pos; // where in a file this data came from
+ size_t orig_size; // and how big it was. if unused, zero out
+
+ uint32 data_offset; // offset within buffer (already reflected in Data())
+
+ union {
+ media_audio_header raw_audio;
+ media_video_header raw_video;
+ media_multistream_header multistream;
+ media_encoded_audio_header encoded_audio;
+ media_encoded_video_header encoded_video;
+ char _reserved_[64]; // pad to 64 bytes
+ } u;
+};
+
+
+struct media_file_format_id {
+ ino_t node;
+ dev_t device;
+ uint32 internal_id;
+};
+_IMPEXP_MEDIA bool operator==(const media_file_format_id & a, const media_file_format_id & b);
+_IMPEXP_MEDIA bool operator<(const media_file_format_id & a, const media_file_format_id & b);
+
+typedef enum {
+ B_ANY_FORMAT_FAMILY = 0,
+ B_BEOS_FORMAT_FAMILY = 1,
+ B_QUICKTIME_FORMAT_FAMILY = 2, /* QuickTime is a registered trademark of Apple Computer */
+ B_AVI_FORMAT_FAMILY = 3,
+ B_ASF_FORMAT_FAMILY = 4,
+ B_MPEG_FORMAT_FAMILY = 5,
+ B_WAV_FORMAT_FAMILY = 6,
+ B_AIFF_FORMAT_FAMILY = 7,
+ B_AVR_FORMAT_FAMILY = 8,
+
+ B_MISC_FORMAT_FAMILY = 99999
+} media_format_family;
+
+struct media_file_format {
+ enum { /* flags */
+ B_READABLE = 0x1,
+ B_WRITABLE = 0x2,
+ B_PERFECTLY_SEEKABLE = 0x4,
+ B_IMPERFECTLY_SEEKABLE = 0x8,
+ B_KNOWS_RAW_VIDEO = 0x10,
+ B_KNOWS_RAW_AUDIO = 0x20,
+ B_KNOWS_MIDI = 0x40,
+ B_KNOWS_ENCODED_VIDEO = 0x80,
+ B_KNOWS_ENCODED_AUDIO = 0x100,
+ B_KNOWS_OTHER = 0x1000000, /* clipping, text, control, ... */
+ B_KNOWS_ANYTHING = 0x2000000
+ };
+ uint32 capabilities; // can this format support audio, video, etc
+ media_file_format_id id; // opaque id used to construct a BMediaFile
+ media_format_family family; // one of the family enums
+ int32 version; // 100 for 1.0
+
+ uint32 _reserved_[25];
+
+ char mime_type[64]; // eg: "video/quicktime", "audio/aiff", etc
+ char pretty_name[64]; // eg: "QuickTime File Format"
+ char short_name[32]; // eg: "quicktime", "avi", "mpeg"
+ char file_extension[8]; // eg: "mov", "avi", "mpg"
+ char reserved[88];
+};
+
+
+//
+// Use this function iterate through available file format writers
+//
+status_t get_next_file_format(int32 *cookie, media_file_format *mfi);
+
+
+
+/* This struct is guaranteed to be large enough for any message your service */
+/* thread will get for any media_node -- 16k is an upper-bound size limit. */
+/* In your thread, read_port() into this struct, and call HandleMessage() on it. */
+const size_t B_MEDIA_MESSAGE_SIZE = 16384;
+
+_IMPEXP_MEDIA extern const char * B_MEDIA_SERVER_SIGNATURE;
+
+class media_node; /* found in MediaNode.h */
+struct media_input;
+struct media_output;
+struct live_node_info;
+struct dormant_node_info;
+struct buffer_clone_info;
+
+
+// If you for some reason need to get rid of the media_server (and friends)
+// use these functions, rather than sending messages yourself.
+// The callback will be called for various stages of the process, with 100 meaning completely done
+// The callback should always return TRUE for the time being.
+status_t shutdown_media_server(bigtime_t timeout = B_INFINITE_TIMEOUT, bool (*progress)(int stage, const char * message, void * cookie) = NULL, void * cookie = NULL);
+status_t launch_media_server(uint32 flags = 0);
+
+// Given an image_id, prepare that image_id for realtime media
+// If the kind of media indicated by "flags" is not enabled for real-time,
+// B_MEDIA_REALTIME_DISABLED is returned.
+// If there are not enough system resources to enable real-time performance,
+// B_MEDIA_REALTIME_UNAVAILABLE is returned.
+status_t media_realtime_init_image(image_id image, uint32 flags);
+
+// Given a thread ID, and an optional indication of what the thread is
+// doing in "flags", prepare the thread for real-time media performance.
+// Currently, this means locking the thread stack, up to size_used bytes,
+// or all of it if 0 is passed. Typically, you will not be using all
+// 256 kB of the stack, so you should pass some smaller value you determine
+// from profiling the thread; typically in the 32-64kB range.
+// Return values are the same as for media_prepare_realtime_image().
+status_t media_realtime_init_thread(thread_id thread, size_t stack_used, uint32 flags);
+
+// A teeny bit of legacy preserved for BSoundFile from R3.
+// These came from the old MediaDefs.h; don't use them
+// unless you get them from BSoundFile.
+
+/* values for byte_ordering */
+enum { B_BIG_ENDIAN, B_LITTLE_ENDIAN };
+
+/* values for sample_format */
+enum {
+ B_UNDEFINED_SAMPLES,
+ B_LINEAR_SAMPLES,
+ B_FLOAT_SAMPLES,
+ B_MULAW_SAMPLES
+ };
+
+
+/* for encoders and file writers */
+
+struct media_encode_info {
+ uint32 flags; /* B_MEDIA_KEY_FRAME, set before every use */
+ int32 used_data_size; /* data size used by other tracks */
+ /* add output size used by this encoder */
+ bigtime_t start_time; /* us from start of file */
+ bigtime_t time_to_encode; /* 0 - hurry up, B_INFINITE_TIMEOUT - don't care */
+ int32 _pad[22];
+ void *file_format_data; /* file format specific info */
+ size_t file_format_data_size;
+ void *codec_data; /* codec specific info */
+ size_t codec_data_size;
+
+ media_encode_info();
+};
+
+struct encode_parameters {
+ float quality; // 0.0-1.0 , 1.0 is high quality
+ int32 avg_field_size; // in bytes
+ int32 max_field_size; // in bytes
+ int32 _pad[27];
+ void *user_data; // codec specific info
+ size_t user_data_size;
+};
+
+struct media_decode_info {
+ bigtime_t time_to_decode; /* 0 - hurry up, B_INFINITE_TIMEOUT - don't care */
+ int32 _pad[26];
+ void *file_format_data; /* file format specific info */
+ size_t file_format_data_size;
+ void *codec_data; /* codec specific info */
+ size_t codec_data_size;
+
+ media_decode_info();
+};
+
+
+#endif // __cplusplus
+
+#endif /* MEDIA_DEFS_H */
diff --git a/headers/os/media/MediaEncoder.h b/headers/os/media/MediaEncoder.h
new file mode 100644
index 0000000000..e3b974f9f6
--- /dev/null
+++ b/headers/os/media/MediaEncoder.h
@@ -0,0 +1,91 @@
+#ifndef MEDIAENCODER_H
+#define MEDIAENCODER_H
+
+#include
+#include
+
+namespace BPrivate {
+ class Encoder;
+ class _AddonManager;
+}
+
+class BMediaEncoder {
+ public:
+ BMediaEncoder();
+ BMediaEncoder(const media_format *output_format);
+ BMediaEncoder(const media_codec_info *mci);
+ virtual ~BMediaEncoder();
+ status_t InitCheck() const;
+
+ status_t SetTo(const media_format *output_format);
+ status_t SetTo(const media_codec_info *mci);
+ status_t SetFormat(media_format *input_format,
+ media_format *output_format,
+ media_file_format *mfi = NULL);
+ status_t Encode(const void *buffer, int64 frame_count,
+ media_encode_info *info);
+ status_t GetEncodeParameters(encode_parameters *parameters) const;
+ status_t SetEncodeParameters(encode_parameters *parameters);
+ protected:
+ virtual status_t WriteChunk(const void *chunk_data, size_t chunk_len,
+ media_encode_info *info) = 0;
+ virtual status_t AddTrackInfo(uint32 code, const char *data, size_t size);
+
+ private:
+ // unimplemented
+ BMediaEncoder(const BMediaEncoder &);
+ BMediaEncoder & operator=(const BMediaEncoder &);
+
+ static status_t write_chunk(void *classptr, const void *chunk_data,
+ size_t chunk_len, media_encode_info *info);
+ void Init();
+ void ReleaseEncoder();
+
+ BPrivate::_AddonManager *fEncoderMgr;
+ BPrivate::Encoder *fEncoder;
+ int32 fEncoderID;
+ bool fFormatValid;
+ bool fEncoderStarted;
+ status_t fInitStatus;
+
+ /* fbc data and virtuals */
+
+ uint32 _reserved_BMediaEncoder_[32];
+
+ virtual status_t _Reserved_BMediaEncoder_0(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEncoder_1(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEncoder_2(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEncoder_3(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEncoder_4(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEncoder_5(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEncoder_6(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEncoder_7(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEncoder_8(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEncoder_9(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEncoder_10(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEncoder_11(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEncoder_12(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEncoder_13(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEncoder_14(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEncoder_15(int32 arg, ...);
+};
+
+class BMediaBufferEncoder: public BMediaEncoder {
+ public:
+ BMediaBufferEncoder();
+ BMediaBufferEncoder(const media_format *output_format);
+ BMediaBufferEncoder(const media_codec_info *mci);
+ status_t EncodeToBuffer(void *output_buffer, size_t *output_size,
+ const void *input_buffer, int64 frame_count,
+ media_encode_info *info);
+ protected:
+ virtual status_t WriteChunk(const void *chunk_data, size_t chunk_len,
+ media_encode_info *info);
+
+ void *fBuffer;
+ int32 fBufferSize;
+};
+
+
+#endif
+
diff --git a/headers/os/media/MediaEventLooper.h b/headers/os/media/MediaEventLooper.h
new file mode 100644
index 0000000000..db3d7c9d3d
--- /dev/null
+++ b/headers/os/media/MediaEventLooper.h
@@ -0,0 +1,169 @@
+/*******************************************************************************
+/
+/ File: MediaEventLooper.h
+/
+/ Description: BMediaEventLooper spawns a thread which calls WaitForMessage,
+/ pushes BMediaNode messages onto its BTimedEventQueues.
+/ informs you when it is time to handle an event.
+/ Report your event latency, push other events onto the queue
+/ and override HandleEvent to do your work.
+/
+/ Copyright 1999, Be Incorporated, All Rights Reserved
+/
+*******************************************************************************/
+
+#if !defined(_MEDIA_EVENT_LOOPER_H)
+#define _MEDIA_EVENT_LOOPER_H
+
+#include
+#include
+
+class BMediaEventLooper :
+ public virtual BMediaNode
+{
+ protected:
+ enum run_state {
+ B_IN_DISTRESS = -1,
+ B_UNREGISTERED,
+ B_STOPPED,
+ B_STARTED,
+ B_QUITTING,
+ B_TERMINATED,
+ B_USER_RUN_STATES = 0x4000
+ };
+
+ protected:
+ /* this has to be on top rather than bottom to force a vtable in mwcc */
+ virtual ~BMediaEventLooper();
+ explicit BMediaEventLooper(uint32 apiVersion = B_BEOS_VERSION);
+
+ /* from BMediaNode */
+ protected:
+ virtual void NodeRegistered();
+ virtual void Start(bigtime_t performance_time);
+ virtual void Stop(bigtime_t performance_time, bool immediate);
+ virtual void Seek(bigtime_t media_time, bigtime_t performance_time);
+ virtual void TimeWarp(bigtime_t at_real_time, bigtime_t to_performance_time);
+ virtual status_t AddTimer(bigtime_t at_performance_time, int32 cookie);
+ virtual void SetRunMode(run_mode mode);
+
+ /* BMediaEventLooper Hook functions */
+ protected:
+ /* you must override to handle your events! */
+ /* you should not call HandleEvent directly */
+ virtual void HandleEvent( const media_timed_event *event,
+ bigtime_t lateness,
+ bool realTimeEvent = false) = 0;
+
+ /* override to clean up custom events you have added to your queue */
+ virtual void CleanUpEvent(const media_timed_event *event);
+
+ /* called from Offline mode to determine the current time of the node */
+ /* update your internal information whenever it changes */
+ virtual bigtime_t OfflineTime();
+
+ /* override only if you know what you are doing! */
+ /* otherwise much badness could occur */
+ /* the actual control loop function: */
+ /* waits for messages, Pops events off the queue and calls DispatchEvent */
+ virtual void ControlLoop();
+
+ thread_id ControlThread();
+
+ protected:
+ BTimedEventQueue * EventQueue();
+ BTimedEventQueue * RealTimeQueue();
+
+ int32 Priority() const;
+ int32 RunState() const;
+ bigtime_t EventLatency() const;
+ bigtime_t BufferDuration() const;
+ bigtime_t SchedulingLatency() const;
+
+ /* use the priority constants from OS.h */
+ /* or suggest_thread_priority from scheduler.h */
+ /* will clamp priorities to be inbetween 5 and 120 */
+ status_t SetPriority(int32 priority);
+
+ /* set the run state */
+ void SetRunState(run_state state);
+
+ /* clamps to 0 if latency < 0 */
+ void SetEventLatency(bigtime_t latency);
+
+ /* clamps to 0 if duration is < 0 */
+ void SetBufferDuration(bigtime_t duration);
+
+ /* set the offline time returned in OfflineTime */
+ void SetOfflineTime(bigtime_t offTime);
+
+ /* spawn and resume the thread - must be called from NodeRegistered */
+ void Run();
+
+ /* close down the thread - must be called from your destructor */
+ void Quit();
+
+ /* calls HandleEvent and does BMediaEventLooper event work */
+ void DispatchEvent( const media_timed_event *event,
+ bigtime_t lateness,
+ bool realTimeEvent = false);
+
+ private:
+ static int32 _ControlThreadStart(void *arg);
+ static void _CleanUpEntry(const media_timed_event *event, void *context);
+ void _DispatchCleanUp(const media_timed_event *event);
+
+ BTimedEventQueue fEventQueue;
+ BTimedEventQueue fRealTimeQueue;
+ thread_id fControlThread;
+ int32 fCurrentPriority;
+ int32 fSetPriority;
+ volatile int32 fRunState;
+ bigtime_t fEventLatency;
+ bigtime_t fSchedulingLatency;
+ bigtime_t fBufferDuration;
+ bigtime_t fOfflineTime;
+ uint32 fApiVersion;
+
+ private:
+ /* unimplemented for your protection */
+ BMediaEventLooper(const BMediaEventLooper&);
+ BMediaEventLooper& operator=(const BMediaEventLooper&);
+
+ protected:
+ virtual status_t DeleteHook(BMediaNode * node);
+
+ /* fragile base class stuffing */
+ private:
+ /* it must be thanksgiving!! lots of stuffing! */
+ virtual status_t _Reserved_BMediaEventLooper_0(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEventLooper_1(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEventLooper_2(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEventLooper_3(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEventLooper_4(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEventLooper_5(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEventLooper_6(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEventLooper_7(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEventLooper_8(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEventLooper_9(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEventLooper_10(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEventLooper_11(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEventLooper_12(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEventLooper_13(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEventLooper_14(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEventLooper_15(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEventLooper_16(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEventLooper_17(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEventLooper_18(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEventLooper_19(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEventLooper_20(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEventLooper_21(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEventLooper_22(int32 arg, ...);
+ virtual status_t _Reserved_BMediaEventLooper_23(int32 arg, ...);
+
+ /* turkey for weeks! */
+ bool _reserved_bool_[4];
+ uint32 _reserved_BMediaEventLooper_[12];
+};
+
+#endif
diff --git a/headers/os/media/MediaFile.h b/headers/os/media/MediaFile.h
new file mode 100644
index 0000000000..c7e641f7e2
--- /dev/null
+++ b/headers/os/media/MediaFile.h
@@ -0,0 +1,207 @@
+#ifndef _MEDIA_FILE_H
+#define _MEDIA_FILE_H
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+
+namespace BPrivate {
+ class MediaExtractor;
+ class _IMPEXP_MEDIA MediaWriter;
+ class _AddonManager;
+}
+
+
+// forward declarations
+class BMediaTrack;
+class BParameterWeb;
+class BView;
+
+
+// flags for the BMediaFile constructor
+enum {
+ B_MEDIA_FILE_REPLACE_MODE = 0x00000001,
+ B_MEDIA_FILE_NO_READ_AHEAD = 0x00000002,
+ B_MEDIA_FILE_UNBUFFERED = 0x00000006,
+ B_MEDIA_FILE_BIG_BUFFERS = 0x00000008
+};
+
+// BMediaFile represents a media file (AVI, Quicktime, MPEG, AIFF, WAV, etc)
+//
+// To read a file you construct a BMediaFile with an entry_ref, get the
+// BMediaTracks out of it and use those to read the data.
+//
+// To write a file you construct a BMediaFile with an entry ref and an id as
+// returned by get_next_file_format(). You then CreateTrack() to create
+// various audio & video tracks. Once you're done creating tracks, call
+// CommitHeader(), then write data to each track and call CloseFile() when
+// you're done.
+//
+
+class BMediaFile {
+
+public:
+ // these four constructors are used for read-only access
+ BMediaFile( const entry_ref *ref);
+ BMediaFile( BDataIO * source); // BFile is a BDataIO
+ BMediaFile( const entry_ref * ref,
+ int32 flags);
+ BMediaFile( BDataIO * source,
+ int32 flags); // BFile is a BDataIO
+
+ // these two constructors are for read-write access
+ BMediaFile(const entry_ref *ref, // these two are write-only
+ const media_file_format * mfi,
+ int32 flags=0);
+ BMediaFile(BDataIO *destination, // BFile is a BDataIO
+ const media_file_format * mfi,
+ int32 flags=0);
+
+/* modified by Marcus Overhagen */
+BMediaFile(const media_file_format * mfi,
+ int32 flags);
+/* modified by Marcus Overhagen */
+
+
+ virtual ~BMediaFile();
+
+ status_t InitCheck() const;
+
+ // Get info about the underlying file format.
+ status_t GetFileFormatInfo(media_file_format *mfi) const;
+
+ //
+ // These functions are for read-only access to a media file.
+ // The data is read using the BMediaTrack object.
+ //
+ const char *Copyright(void) const;
+ int32 CountTracks() const;
+
+ // Can be called multiple times with the same index. You must call
+ // ReleaseTrack() when you're done with a track.
+ BMediaTrack *TrackAt(int32 index);
+
+ // Release the resource used by a given BMediaTrack object, to reduce
+ // the memory usage of your application. The specific 'track' object
+ // can no longer be used, but you can create another one by calling
+ // TrackAt() with the same track index.
+ status_t ReleaseTrack(BMediaTrack *track);
+
+ // A convenience.
+ status_t ReleaseAllTracks(void);
+
+
+ // Create and add a track to the media file
+ BMediaTrack *CreateTrack(media_format *mf, const media_codec_info *mci);
+ // Create and add a raw track to the media file (it has no encoder)
+ BMediaTrack *CreateTrack(media_format *mf);
+
+ // Lets you set the copyright info for the entire file
+ status_t AddCopyright(const char *data);
+
+ // Call this to add user-defined chunks to a file (if they're supported)
+ status_t AddChunk(int32 type, const void *data, size_t size);
+
+ // After you have added all the tracks you want, call this
+ status_t CommitHeader(void);
+
+ // After you have written all the data to the track objects, call this
+ status_t CloseFile(void);
+
+ // This is for controlling file format parameters
+ BParameterWeb *Web();
+ status_t GetParameterValue(int32 id, void *valu, size_t *size);
+ status_t SetParameterValue(int32 id, const void *valu, size_t size);
+ BView *GetParameterView();
+
+
+ // For the future...
+ virtual status_t Perform(int32 selector, void * data);
+
+private:
+ BPrivate::MediaExtractor *fExtractor;
+ int32 _reserved_BMediaFile_was_fExtractorID;
+ int32 fTrackNum;
+ status_t fErr;
+
+ BPrivate::_AddonManager *fEncoderMgr;
+ BPrivate::_AddonManager *fWriterMgr;
+ BPrivate::MediaWriter *fWriter;
+ int32 fWriterID;
+ media_file_format fMFI;
+
+ bool fFileClosed;
+ bool _reserved_was_fUnused[3];
+ BList *fTrackList;
+
+ void Init();
+ void InitReader(BDataIO *source, int32 flags = 0);
+ void InitWriter(BDataIO *source, const media_file_format * mfi,
+ int32 flags);
+
+ BMediaFile();
+ BMediaFile(const BMediaFile&);
+ BMediaFile& operator=(const BMediaFile&);
+
+ BFile *fFile;
+
+
+ /* fbc data and virtuals */
+
+ uint32 _reserved_BMediaFile_[32];
+
+virtual status_t _Reserved_BMediaFile_0(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_1(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_2(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_3(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_4(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_5(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_6(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_7(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_8(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_9(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_10(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_11(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_12(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_13(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_14(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_15(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_16(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_17(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_18(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_19(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_20(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_21(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_22(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_23(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_24(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_25(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_26(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_27(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_28(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_29(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_30(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_31(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_32(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_33(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_34(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_35(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_36(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_37(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_38(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_39(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_40(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_41(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_42(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_43(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_44(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_45(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_46(int32 arg, ...);
+virtual status_t _Reserved_BMediaFile_47(int32 arg, ...);
+};
+
+#endif
diff --git a/headers/os/media/MediaFiles.h b/headers/os/media/MediaFiles.h
new file mode 100644
index 0000000000..45d47cff1c
--- /dev/null
+++ b/headers/os/media/MediaFiles.h
@@ -0,0 +1,69 @@
+/* MediaFiles.h */
+/* Copyright 1998 Be Incorporated. All rights reserved. */
+
+#if !defined(_MEDIA_FILES_H)
+#define _MEDIA_FILES_H
+
+#include
+#include
+
+struct entry_ref;
+
+#include
+
+class BMediaFiles {
+public:
+
+ BMediaFiles();
+virtual ~BMediaFiles();
+
+virtual status_t RewindTypes();
+virtual status_t GetNextType(
+ BString * out_type);
+
+virtual status_t RewindRefs(
+ const char * type);
+virtual status_t GetNextRef(
+ BString * out_type,
+ entry_ref * out_ref = NULL);
+
+virtual status_t GetRefFor(
+ const char * type,
+ const char * item,
+ entry_ref * out_ref);
+virtual status_t SetRefFor(
+ const char * type,
+ const char * item,
+ const entry_ref & ref);
+virtual status_t RemoveRefFor( // This might better be called "ClearRefFor"
+ const char * type, // but it's too late now...
+ const char * item,
+ const entry_ref & ref);
+
+static const char B_SOUNDS[]; /* for "types" */
+
+virtual status_t RemoveItem( // new in 4.1, removes the whole item.
+ const char * type,
+ const char * item);
+
+
+private:
+
+ status_t _Reserved_MediaFiles_0(void *, ...);
+virtual status_t _Reserved_MediaFiles_1(void *, ...);
+virtual status_t _Reserved_MediaFiles_2(void *, ...);
+virtual status_t _Reserved_MediaFiles_3(void *, ...);
+virtual status_t _Reserved_MediaFiles_4(void *, ...);
+virtual status_t _Reserved_MediaFiles_5(void *, ...);
+virtual status_t _Reserved_MediaFiles_6(void *, ...);
+virtual status_t _Reserved_MediaFiles_7(void *, ...);
+
+ BList m_types;
+ int m_type_index;
+ BString m_cur_type;
+ BList m_items;
+ int m_item_index;
+};
+
+#endif /* _MEDIA_FILES_H */
+
diff --git a/headers/os/media/MediaFormats.h b/headers/os/media/MediaFormats.h
new file mode 100644
index 0000000000..56f4dc0c57
--- /dev/null
+++ b/headers/os/media/MediaFormats.h
@@ -0,0 +1,249 @@
+/* MediaFormats.h */
+/* Copyright 1998 Be Incorporated. All rights reserved. */
+
+#if !defined(_MEDIA_TYPES_H)
+#define _MEDIA_TYPES_H
+
+#if defined(__cplusplus)
+#include
+
+#include
+#include
+#include
+#endif
+
+
+struct media_codec_info {
+ char pretty_name[96]; // eg: "SuperSqueeze Encoder by Foo Inc"
+ char short_name[32]; // eg: "supersqueeze"
+
+ int32 id; // opaque id passed to BMediaFile::CreateTrack
+ int32 sub_id;
+
+ int32 pad[63];
+};
+
+//
+// Use this to iterate through the available encoders for a file format.
+//
+status_t get_next_encoder(int32 *cookie,
+ const media_file_format *mfi, // this comes from get_next_file_format()
+ const media_format *input_format, // this is the type of data given to the encoder
+ media_format *output_format, // this is the type of data encoder will output
+ media_codec_info *ei); // information about the encoder
+
+status_t get_next_encoder(
+ int32 *cookie,
+ const media_file_format *mfi, // this comes from get_next_file_format()
+ // pass NULL if you don't care
+ const media_format *input_format, // this is the type of data given to the
+ // encoder, wildcards are accepted
+ const media_format *output_format, // this is the type of data encoder
+ // you want the encoder to output.
+ // Wildcards are accepted
+ media_codec_info *ei, // information about the encoder
+ media_format *accepted_input_format,// this is the type of data that the
+ // encoder will accept as input.
+ // Wildcards in input_format will be
+ // specialized here.
+ media_format *accepted_output_format// this is the type of data that the
+ // encoder will output.
+ // Wildcards in output_format will be
+ // specialized here.
+ );
+
+
+status_t get_next_encoder(int32 *cookie, media_codec_info *ei);
+
+enum media_file_accept_format_flags {
+ B_MEDIA_REJECT_WILDCARDS = 0x1
+};
+
+bool does_file_accept_format(const media_file_format *mfi,
+ media_format *format, uint32 flags = 0);
+
+typedef struct {
+ uint8 data[16];
+} GUID;
+
+typedef struct {
+ int32 format;
+} media_beos_description;
+
+typedef struct {
+ uint32 codec;
+ uint32 vendor;
+} media_quicktime_description;
+
+typedef struct {
+ uint32 codec;
+} media_avi_description;
+
+typedef struct {
+ uint32 id;
+} media_avr_description;
+
+typedef struct {
+ GUID guid;
+} media_asf_description;
+
+enum mpeg_id {
+ B_MPEG_ANY = 0,
+ B_MPEG_1_AUDIO_LAYER_1 = 0x101,
+ B_MPEG_1_AUDIO_LAYER_2 = 0x102,
+ B_MPEG_1_AUDIO_LAYER_3 = 0x103, // "MP3"
+ B_MPEG_1_VIDEO = 0x111
+};
+typedef struct {
+ uint32 id;
+} media_mpeg_description;
+
+typedef struct {
+ uint32 codec;
+} media_wav_description;
+
+typedef struct {
+ uint32 codec;
+} media_aiff_description;
+
+typedef struct {
+ uint32 file_format;
+ uint32 codec;
+} media_misc_description;
+
+typedef struct _media_format_description {
+#if defined(__cplusplus)
+ _media_format_description();
+ ~_media_format_description();
+ _media_format_description(const _media_format_description & other);
+ _media_format_description & operator=(const _media_format_description & other);
+#endif
+ media_format_family family;
+ uint32 _reserved_[3];
+ union {
+ media_beos_description beos;
+ media_quicktime_description quicktime;
+ media_avi_description avi;
+ media_asf_description asf;
+ media_mpeg_description mpeg;
+ media_wav_description wav;
+ media_aiff_description aiff;
+ media_misc_description misc;
+ media_avr_description avr;
+ uint32 _reserved_[12];
+ } u;
+} media_format_description;
+
+
+#if defined(__cplusplus)
+
+namespace BPrivate {
+ class addon_list;
+ void dec_load_hook(void *arg, image_id imgid);
+ void extractor_load_hook(void *arg, image_id imgid);
+ class Extractor;
+}
+
+class BMediaFormats {
+public:
+ BMediaFormats();
+virtual ~BMediaFormats();
+
+ status_t InitCheck();
+
+ // Make sure you memset() your descs to 0 before you start filling
+ // them in! Else you may register some bogus value.
+ enum make_format_flags {
+ B_EXCLUSIVE = 0x1, // Fail if this format has already been registered
+ B_NO_MERGE = 0x2, // Don't re-number any formats if there are multiple
+ // clashing previous registrations, but fail instead
+ B_SET_DEFAULT = 0x4 // Set the first format to be the default for the
+ // format family (when registering more than one in
+ // the same family). Only use in Encoder add-ons.
+ };
+ status_t MakeFormatFor(
+ const media_format_description * descs,
+ int32 desc_count,
+ media_format * io_format,
+ uint32 flags = 0,
+ void * _reserved = 0);
+ status_t GetFormatFor(
+ const media_format_description & desc,
+ media_format * out_format);
+
+ // convenience functions
+ static status_t GetBeOSFormatFor(
+ uint32 fourcc, media_format * out_format,
+ media_type type = B_MEDIA_UNKNOWN_TYPE);
+ static status_t GetAVIFormatFor(
+ uint32 fourcc, media_format * out_format,
+ media_type type = B_MEDIA_UNKNOWN_TYPE);
+ static status_t GetQuicktimeFormatFor(
+ uint32 vendor, uint32 fourcc, media_format * out_format,
+ media_type type = B_MEDIA_UNKNOWN_TYPE);
+
+ status_t GetCodeFor(
+ const media_format & format,
+ media_format_family family,
+ media_format_description * out_description);
+
+ status_t RewindFormats();
+ status_t GetNextFormat(
+ media_format * out_format,
+ media_format_description * out_description);
+ // You need to lock/unlock (only) when using RewindFormats()/GetNextFormat()
+ bool Lock();
+ void Unlock();
+
+ /* --- begin deprecated API --- */
+ status_t MakeFormatFor(
+ const media_format_description & desc,
+ const media_format & in_format,
+ media_format * out_format);
+private:
+ friend class BPrivate::addon_list;
+ friend void BPrivate::dec_load_hook(void *arg, image_id imgid);
+ friend void BPrivate::extractor_load_hook(void * arg, image_id imgid);
+ friend class BMediaDecoder;
+ friend class BMediaTrack;
+ friend class BPrivate::Extractor;
+
+ char _reserved_messenger[24]; // sizeof(BMessenger) 24
+ char _reserved_list[28]; // sizeof(BList) 28
+ char _reserved_locker[32]; // sizeof(BLocker) 36
+ int32 m_lock_count;
+static int32 s_cleared;
+static BMessenger s_server;
+static BList s_formats;
+static BLocker s_lock;
+ int32 m_index;
+
+ void clear_formats();
+static void ex_clear_formats_imp();
+static void clear_formats_imp();
+ status_t get_formats();
+static status_t get_formats_imp();
+static BMessenger & get_server();
+
+static status_t bind_addon(
+ const char * addon,
+ const media_format * formats,
+ int32 count);
+static bool is_bound(
+ const char * addon,
+ const media_format * formats,
+ int32 count);
+static status_t find_addons(
+ const media_format * format,
+ BPrivate::addon_list & addons);
+};
+
+_IMPEXP_MEDIA bool operator==(const media_format_description & a, const media_format_description & b);
+_IMPEXP_MEDIA bool operator<(const media_format_description & a, const media_format_description & b);
+
+_IMPEXP_MEDIA bool operator==(const GUID & a, const GUID & b);
+_IMPEXP_MEDIA bool operator<(const GUID & a, const GUID & b);
+#endif
+
+#endif /* _MEDIA_TYPES_H */
+
diff --git a/headers/os/media/MediaNode.h b/headers/os/media/MediaNode.h
new file mode 100644
index 0000000000..f0da72d3c6
--- /dev/null
+++ b/headers/os/media/MediaNode.h
@@ -0,0 +1,340 @@
+/*******************************************************************************
+/
+/ File: MediaNode.h
+/
+/ Description: BMediaNode is the indirect base class for all Media Kit participants.
+/ However, you should use the more specific BBufferConsumer, BBufferProducer
+/ and others rather than BMediaNode directly. It's OK to multiply inherit.
+/
+/ Copyright 1997-98, Be Incorporated, All Rights Reserved
+/
+*******************************************************************************/
+
+
+#if !defined(_MEDIA_NODE_H)
+#define _MEDIA_NODE_H
+
+#include
+#include
+
+#include
+
+class BMediaAddOn;
+
+
+
+class media_node {
+
+public:
+
+ media_node();
+ ~media_node();
+
+ media_node_id node;
+ port_id port;
+ uint32 kind;
+
+static media_node null;
+
+private:
+ uint32 _reserved_[3];
+};
+
+
+struct media_input {
+ media_input();
+ ~media_input();
+ media_node node;
+ media_source source;
+ media_destination destination;
+ media_format format;
+ char name[B_MEDIA_NAME_LENGTH];
+private:
+ uint32 _reserved_media_input_[4];
+};
+
+struct media_output {
+ media_output();
+ ~media_output();
+ media_node node;
+ media_source source;
+ media_destination destination;
+ media_format format;
+ char name[B_MEDIA_NAME_LENGTH];
+private:
+ uint32 _reserved_media_output_[4];
+};
+
+struct live_node_info {
+ live_node_info();
+ ~live_node_info();
+ media_node node;
+ BPoint hint_point;
+ char name[B_MEDIA_NAME_LENGTH];
+private:
+ char reserved[160];
+};
+
+
+struct media_request_info
+{
+ enum what_code
+ {
+ B_SET_VIDEO_CLIPPING_FOR = 1,
+ B_REQUEST_FORMAT_CHANGE,
+ B_SET_OUTPUT_ENABLED,
+ B_SET_OUTPUT_BUFFERS_FOR,
+
+ B_FORMAT_CHANGED = 4097
+ };
+ what_code what;
+ int32 change_tag;
+ status_t status;
+ int32 cookie;
+ void * user_data;
+ media_source source;
+ media_destination destination;
+ media_format format;
+ uint32 _reserved_[32];
+};
+
+struct media_node_attribute
+{
+ enum {
+ B_R40_COMPILED = 1, // has this attribute if compiled using R4.0 headers
+ B_USER_ATTRIBUTE_NAME = 0x1000000,
+ B_FIRST_USER_ATTRIBUTE
+ };
+ uint32 what;
+ uint32 flags; // per attribute
+ int64 data; // per attribute
+};
+
+
+class BMediaNode
+{
+protected:
+ /* this has to be on top rather than bottom to force a vtable in mwcc */
+virtual ~BMediaNode(); /* should be called through Release() */
+public:
+
+ enum run_mode {
+ B_OFFLINE = 1, /* data accurate, no realtime constraint */
+ B_DECREASE_PRECISION, /* when slipping, try to catch up */
+ B_INCREASE_LATENCY, /* when slipping, increase playout delay */
+ B_DROP_DATA, /* when slipping, skip data */
+ B_RECORDING /* you're on the receiving end of recording; buffers are guaranteed to be late */
+ };
+
+
+ BMediaNode * Acquire(); /* return itself */
+ BMediaNode * Release(); /* release will decrement refcount, and delete if 0 */
+
+ const char * Name() const;
+ media_node_id ID() const;
+ uint64 Kinds() const;
+ media_node Node() const;
+ run_mode RunMode() const;
+ BTimeSource * TimeSource() const;
+
+ /* this port is what a media node listens to for commands */
+virtual port_id ControlPort() const;
+
+virtual BMediaAddOn* AddOn(
+ int32 * internal_id) const = 0; /* Who instantiated you -- or NULL for app class */
+
+ /* These will be sent to anyone watching the MediaRoster. */
+ /* The message field "be:node_id" will contain the node ID. */
+ enum node_error {
+ /* Note that these belong with the notifications in MediaDefs.h! */
+ /* They are here to provide compiler type checking in ReportError(). */
+ B_NODE_FAILED_START = 'TRI0',
+ B_NODE_FAILED_STOP, // TRI1
+ B_NODE_FAILED_SEEK, // TRI2
+ B_NODE_FAILED_SET_RUN_MODE, // TRI3
+ B_NODE_FAILED_TIME_WARP, // TRI4
+ B_NODE_FAILED_PREROLL, // TRI5
+ B_NODE_FAILED_SET_TIME_SOURCE_FOR, // TRI6
+ /* display this node with a blinking exclamation mark or something */
+ B_NODE_IN_DISTRESS // TRI7
+ /* TRIA and up are used in MediaDefs.h */
+ };
+
+protected:
+
+ /* Send one of the above codes to anybody who's watching. */
+ status_t ReportError(
+ node_error what,
+ const BMessage * info = NULL); /* String "message" for instance */
+
+ /* When you've handled a stop request, call this function. If anyone is */
+ /* listening for stop information from you, they will be notified. Especially */
+ /* important for offline capable Nodes. */
+ status_t NodeStopped(
+ bigtime_t whenPerformance); // performance time
+ void TimerExpired(
+ bigtime_t notifyPoint, // performance time
+ int32 cookie,
+ status_t error = B_OK);
+
+explicit BMediaNode( /* constructor sets refcount to 1 */
+ const char * name);
+
+ status_t WaitForMessage(
+ bigtime_t waitUntil,
+ uint32 flags = 0,
+ void * _reserved_ = 0);
+
+ /* These don't return errors; instead, they use the global error condition reporter. */
+ /* A node is required to have a queue of at least one pending command (plus TimeWarp) */
+ /* and is recommended to allow for at least one pending command of each type. */
+ /* Allowing an arbitrary number of outstanding commands might be nice, but apps */
+ /* cannot depend on that happening. */
+virtual void Start(
+ bigtime_t performance_time);
+virtual void Stop(
+ bigtime_t performance_time,
+ bool immediate);
+virtual void Seek(
+ bigtime_t media_time,
+ bigtime_t performance_time);
+virtual void SetRunMode(
+ run_mode mode);
+virtual void TimeWarp(
+ bigtime_t at_real_time,
+ bigtime_t to_performance_time);
+virtual void Preroll();
+virtual void SetTimeSource(
+ BTimeSource * time_source);
+
+public:
+
+virtual status_t HandleMessage(
+ int32 message,
+ const void * data,
+ size_t size);
+ void HandleBadMessage( /* call this with messages you and your superclasses don't recognize */
+ int32 code,
+ const void * buffer,
+ size_t size);
+
+ /* Called from derived system classes; you don't need to */
+ void AddNodeKind(
+ uint64 kind);
+
+ // These were not in 4.0.
+ // We added them in 4.1 for future use. They just call
+ // the default global versions for now.
+ void * operator new(
+ size_t size);
+ void * operator new(
+ size_t size,
+ const nothrow_t &) throw();
+ void operator delete(
+ void * ptr);
+#if !__MWERKS__
+ // there's a bug in MWCC under R4.1 and earlier
+ void operator delete(
+ void * ptr,
+ const nothrow_t &) throw();
+#endif
+
+protected:
+
+ /* Called when requests have completed, or failed. */
+virtual status_t RequestCompleted( /* reserved 0 */
+ const media_request_info & info);
+
+private:
+ friend class BTimeSource;
+ friend class _BTimeSourceP;
+ friend class BMediaRoster;
+ friend class _BMediaRosterP;
+ friend class MNodeManager;
+ friend class BBufferProducer; // for getting _mNodeID
+
+ // Deprecated in 4.1
+ int32 IncrementChangeTag();
+ int32 ChangeTag();
+ int32 MintChangeTag();
+ status_t ApplyChangeTag(
+ int32 previously_reserved);
+
+ /* Mmmh, stuffing! */
+protected:
+
+virtual status_t DeleteHook(BMediaNode * node); /* reserved 1 */
+
+virtual void NodeRegistered(); /* reserved 2 */
+
+public:
+
+ /* fill out your attributes in the provided array, returning however many you have. */
+virtual status_t GetNodeAttributes( /* reserved 3 */
+ media_node_attribute * outAttributes,
+ size_t inMaxCount);
+
+virtual status_t AddTimer(
+ bigtime_t at_performance_time,
+ int32 cookie);
+
+private:
+
+ status_t _Reserved_MediaNode_0(void *); /* DeleteHook() */
+ status_t _Reserved_MediaNode_1(void *); /* RequestCompletionHook() */
+ status_t _Reserved_MediaNode_2(void *); /* NodeRegistered() */
+ status_t _Reserved_MediaNode_3(void *); /* GetNodeAttributes() */
+ status_t _Reserved_MediaNode_4(void *); /* AddTimer() */
+virtual status_t _Reserved_MediaNode_5(void *);
+virtual status_t _Reserved_MediaNode_6(void *);
+virtual status_t _Reserved_MediaNode_7(void *);
+virtual status_t _Reserved_MediaNode_8(void *);
+virtual status_t _Reserved_MediaNode_9(void *);
+virtual status_t _Reserved_MediaNode_10(void *);
+virtual status_t _Reserved_MediaNode_11(void *);
+virtual status_t _Reserved_MediaNode_12(void *);
+virtual status_t _Reserved_MediaNode_13(void *);
+virtual status_t _Reserved_MediaNode_14(void *);
+virtual status_t _Reserved_MediaNode_15(void *);
+
+ BMediaNode(); /* private unimplemented */
+ BMediaNode(
+ const BMediaNode & clone);
+ BMediaNode & operator=(
+ const BMediaNode & clone);
+
+ BMediaNode( /* constructor sets refcount to 1 */
+ const char * name,
+ media_node_id id,
+ uint32 kinds);
+
+ media_node_id fNodeID;
+ BTimeSource * fTimeSource;
+ int32 fRefCount;
+ char fName[B_MEDIA_NAME_LENGTH];
+ run_mode fRunMode;
+ int32 _mChangeCount; // deprecated
+ int32 _mChangeCountReserved; // deprecated
+ uint64 fKinds;
+ media_node_id fTimeSourceID;
+ bool _mReservedBool[4];
+
+mutable port_id fControlPort;
+
+ uint32 _reserved_media_node_[13];
+
+
+
+protected:
+
+static int32 NewChangeTag(); // for use by BBufferConsumer, mostly
+
+private:
+ // dont' rename this one, it's static and needed for binary compatibility
+static int32 _m_changeTag; // not to be confused with _mChangeCount
+};
+
+
+
+#endif /* _MEDIA_NODE_H */
+
diff --git a/headers/os/media/MediaRoster.h b/headers/os/media/MediaRoster.h
new file mode 100644
index 0000000000..d88932538d
--- /dev/null
+++ b/headers/os/media/MediaRoster.h
@@ -0,0 +1,428 @@
+/*******************************************************************************
+/
+/ File: MediaRoster.h
+/
+/ Description: The BMediaRoster is the main application interface to the Media Kit
+/
+/ Copyright 1997-98, Be Incorporated, All Rights Reserved
+/
+*******************************************************************************/
+
+#if !defined(_MEDIA_ROSTER_H)
+#define _MEDIA_ROSTER_H
+
+#include