Set*UIColor, etc.
The inseparable changes necessary to support live color updating across the system in a sane, safe, and performant manner. BView gains: HasSystemColors() HasDefaultColors() AdoptSystemColors() AdoptParentColors() AdoptViewColor(BView*) SetViewUIColor(color_which, float tint) SetHighUIColor(... SetLowUIColor(... ViewUIColor(float* tint) HighUIColor(... LowUIColor(... DelayedInvalidate() BWindow gains a simple helper method: IsOffscreenWindow() BMessage gains: AddColor() FindColor() GetColor() HasColor() * allegedly this API is deprecated, but I implemented it anyway ReplaceColor() SetColor() Previous private ColorTools methods are made public and moved into GraphicsDefs: mix_color, blend_color, disable_color These are fully compatible with BeOS dan0 R5.1 methods and are just code cleanup of BeOS example code under the OpenTracker license. In addition, four new colors are created: B_LINK_TEXT_COLOR B_LINK_HOVER_COLOR B_LINK_ACTIVE_COLOR B_LINK_VISITED_COLOR These changes are documented in their proper user documentation files. In addition, due to a history rewrite, B_FOLLOW_LEFT_TOP has been defined and used in lieu of B_FOLLOW_TOP | B_FOLLOW_LEFT and is included in this commit. On the app_server side, the following has changed: Add DelayedMessage - a system by which messages can be sent at a scheduled time, and can also be merged according to set rules. A single thread is used to service the message queue and multiple recipients can be set for each message. Desktop gains the ability to add message ports to a DelayedMessage so that said messages can target either all applications or all windows, as needed. Desktop maintains a BMessage which is used to queue up all pending color changes and the delayed messaging system is used to enact these changes after a short period of time has passed. This prevents abuse and allows the system to merge repeated set_ui_color events into one event for client applications, improving performance drastically. In addition, B_COLORS_UPDATED is sent to the BApplication, which forwards the message to each BWindow. This is done to improve performance over having the app_server independently informing each window. Decorator changes are live now, which required some reworking. Signed-off-by: Augustin Cavalier <[email protected]>
This commit is contained in:
committed by
Augustin Cavalier
parent
a3212ce3e9
commit
7f9368cae5
+139
-1
@@ -1078,6 +1078,7 @@
|
||||
\since BeOS R3
|
||||
*/
|
||||
|
||||
|
||||
/*!
|
||||
\fn status_t BMessage::AddFloat(const char* name, float aFloat)
|
||||
\brief Convenience method to add a \c float to the label \a name.
|
||||
@@ -1118,6 +1119,26 @@
|
||||
*/
|
||||
|
||||
|
||||
/*!
|
||||
\fn status_t BMessage::AddColor(const char* name, rgb_color aColor)
|
||||
\brief Convenience method to add a \c rgb_color to the label \a name.
|
||||
|
||||
This method calls AddData() with the \c B_RGB_32_BIT_TYPE \a type.
|
||||
|
||||
\param name The label to associate the data with.
|
||||
\param aColor The value to store in the message.
|
||||
|
||||
\returns A status code, \c B_OK on success or an error code.
|
||||
|
||||
\see AddColor() for a more detailed overview of the inner workings.
|
||||
\see FindColor()
|
||||
\see GetColor()
|
||||
\see ReplaceColor()
|
||||
|
||||
\since Haiku R1
|
||||
*/
|
||||
|
||||
|
||||
/*!
|
||||
\fn status_t BMessage::AddPointer(const char* name, const void* aPointer)
|
||||
\brief Convenience method to add a \c pointer to the label \a name.
|
||||
@@ -1807,6 +1828,48 @@
|
||||
*/
|
||||
|
||||
|
||||
/*!
|
||||
\fn status_t BMessage::FindColor(const char* name, rgb_color* value)
|
||||
\brief Find a color with the label \a name.
|
||||
|
||||
This is an overloaded version of
|
||||
FindColor(const char*, int32, rgb_color*) const
|
||||
where the data is sought at \a index \c 0.
|
||||
|
||||
\param name The label to which the data is associated.
|
||||
\param value The object in which the data should be copied.
|
||||
|
||||
\returns A status code, \c B_OK on success or an error code.
|
||||
\retval B_OK The object now contains the requested data.
|
||||
\retval B_NAME_NOT_FOUND There is no field with this \a name.
|
||||
|
||||
\since Haiku R1
|
||||
*/
|
||||
|
||||
|
||||
/*!
|
||||
\fn status_t BMessage::FindColor(const char* name, int32 index,
|
||||
rgb_color* value) const
|
||||
\brief Find a color at the label \a name at an \a index.
|
||||
|
||||
This method looks for the data with the \c B_RGB_32_BIT_TYPE, and copies
|
||||
it into a provided buffer.
|
||||
|
||||
\param name The label to which the data is associated.
|
||||
\param index The index from which the data should be copied.
|
||||
\param value The object in which the data should be copied.
|
||||
|
||||
\returns A status code, \c B_OK on success or an error code.
|
||||
\retval B_OK The object now contains the requested data.
|
||||
\retval B_BAD_INDEX The \a index does not exist.
|
||||
\retval B_NAME_NOT_FOUND There is no field with this \a name.
|
||||
|
||||
\see FindColor(const char*, rgb_color*) const
|
||||
|
||||
\since BeOS R3
|
||||
*/
|
||||
|
||||
|
||||
/*!
|
||||
\fn status_t BMessage::FindPointer(const char* name, void** pointer) const
|
||||
\brief Find a pointer at the label \a name.
|
||||
@@ -1849,7 +1912,7 @@
|
||||
\retval B_BAD_INDEX The \a index does not exist.
|
||||
\retval B_NAME_NOT_FOUND There is no field with this \a name.
|
||||
|
||||
\see FindPointer(const char*, double*) const
|
||||
\see FindPointer(const char*, void*) const
|
||||
|
||||
\since BeOS R3
|
||||
*/
|
||||
@@ -2569,6 +2632,49 @@
|
||||
*/
|
||||
|
||||
|
||||
/*!
|
||||
\fn status_t BMessage::ReplaceColor(const char* name, rgb_color aColot)
|
||||
\brief Replace a color at the label \a name.
|
||||
|
||||
This method is an overloaded method of
|
||||
ReplaceColor(const char*, int32, rgb_color).
|
||||
It replaces the data at \a index \c 0.
|
||||
|
||||
\param name The name associated with the data to replace.
|
||||
\param aColor Where to store in the message.
|
||||
|
||||
\returns A status code, \c B_OK on success or an error code.
|
||||
\retval B_OK The operation succeeded.
|
||||
\retval B_NAME_NOT_FOUND There is no field with this \a name.
|
||||
|
||||
\since Haiku R1
|
||||
*/
|
||||
|
||||
|
||||
/*!
|
||||
\fn status_t BMessage::ReplaceColor(const char* name, int32 index,
|
||||
rgb_color aColor)
|
||||
\brief Replace a rgb_color at the label \a name at a specified
|
||||
\a index.
|
||||
|
||||
The data at the specified \a name and \a index will be replaced, if it
|
||||
matches the \c B_RGB_32_BIT_TYPE.
|
||||
|
||||
\param name The name associated with the data to replace.
|
||||
\param index The index in the array to replace.
|
||||
\param aColor Where to store in the message.
|
||||
|
||||
\returns A status code, \c B_OK on success or an error code.
|
||||
\retval B_OK The operation succeeded.
|
||||
\retval B_BAD_INDEX The index was out of range.
|
||||
\retval B_NAME_NOT_FOUND There is no field with this \a name.
|
||||
|
||||
\see ReplaceColor(const char*, rgb_color)
|
||||
|
||||
\since Haiku R1
|
||||
*/
|
||||
|
||||
|
||||
/*!
|
||||
\fn status_t BMessage::ReplacePointer(const char* name,
|
||||
const void* pointer)
|
||||
@@ -3513,6 +3619,38 @@ bool enabled = GetBool("enabled", false);
|
||||
*/
|
||||
|
||||
|
||||
/*!
|
||||
\fn rgb_color BMessage::GetColor(const char* name, rgb_color defaultValue) const
|
||||
\brief Return the rgb_color value from message with \a name, or
|
||||
\a defaultValue if not found.
|
||||
|
||||
\param name The name of the item to retrieve.
|
||||
\param defaultValue The value to use if the item specified by \a name
|
||||
is not found.
|
||||
|
||||
\return The item with \a name, or \a defaultValue if not found.
|
||||
|
||||
\since Haiku R1
|
||||
*/
|
||||
|
||||
|
||||
/*!
|
||||
\fn rgb_color BMessage::GetColor(const char* name, int32 index,
|
||||
rgb_colorr defaultValue) const
|
||||
\brief Return the rgb_color value from message with \a name and \a index, or
|
||||
\a defaultValue if not found.
|
||||
|
||||
\param name The name of the item to retrieve.
|
||||
\param index The index of the item to retrieve if there is more than one.
|
||||
\param defaultValue The value to use if the item specified by \a name
|
||||
is not found.
|
||||
|
||||
\return The item with \a name, or \a defaultValue if not found.
|
||||
|
||||
\since Haiku R1
|
||||
*/
|
||||
|
||||
|
||||
/*!
|
||||
\fn const char* BMessage::GetString(const char* name,
|
||||
const char* defaultValue) const
|
||||
|
||||
Reference in New Issue
Block a user