bmpbndl.h

Clase wxBitmapBundleImpl

Clase base para implementaciones personalizadas de wxBitmapBundle.

Jerarquía:

Jerarquía de la clase wxBitmapBundleImpl

Esta clase no debería utilizarse directamente en el código de la aplicación, pero puede derivarse de ella para implementar paquetes de mapas de bits personalizados.

Ejemplo de uso:/p>

class MyCustomBitmapBundleImpl : public wxBitmapBundleImpl
{
public:
    MyCustomBitmapBundleImpl()
    {
    }
 
    wxSize GetDefaultSize() const wxOVERRIDE
    {
        ... determine the minimum/default size for bitmap to use ...
    }
 
    wxSize GetPreferredBitmapSizeAtScale(double scale) const wxOVERRIDE
    {
        // Si está bien escalar el mapa de bits, solo tiene que utilizar 
        // el tamaño estándar en la escala dada
        return GetDefaultSize()*scale;
 
        ... de lo contrario, habría que encontrar un mapa de bits existente 
        del tamaño más cercano al anterior y devolver su tamaño, 
        posiblemente dejando que DoGetPreferredSize() lo elija ...
    }
 
    wxBitmap GetBitmap(const wxSize& size) wxOVERRIDE
    {
        ... obtener el mapa de bits del tamaño solicitado de algún lugar y 
        almacenarlo en caché si es necesario, es decir, si obtenerlo es costoso ...
    }
};
 
toolBar->AddTool(wxID_OPEN, wxBitmapBundle::FromImpl(new MyCustomBitmapBundleImpl());

En el código de ejemplo de la barra de herramientas hay un ejemplo completo (aunque muy sencillo) de su uso.

Funciones miembro

DoGetPreferredSize()

wxSize wxBitmapBundleImpl::DoGetPreferredSize(double scale) const

Ayuda para implementar GetPreferredBitmapSizeAtScale() en las clases derivadas.

Esta función implementa el algoritmo estándar utilizado dentro de wxWidgets e intenta encontrar la escala más cercana a la dada, al mismo tiempo que intenta elegir una de las escalas disponibles, para evitar rescalar los mapas de bits.

Se basa en GetNextAvailableScale() para obtener información sobre los mapas de bits disponibles, por lo que esa función debe ser sobrescrita si se utiliza esta.

Normalmente, esta función se utiliza en la implementación de las clases derivadas para reenviar GetPreferredBitmapSizeAtScale() y, cuando se hace esto, GetBitmap() también puede utilizar GetIndexToUpscale() para elegir el mapa de bits a escalar si es necesario:

class MyCustomBitmapBundleImpl : public wxBitmapBundleImpl
{
public:
    wxSize GetDefaultSize() const
    {
        return wxSize(32, 32);
    }
 
    wxSize GetPreferredBitmapSizeAtScale(double scale) const wxOVERRIDE
    {
        return DoGetPreferredSize(scale);
    }
 
    wxBitmap GetBitmap(const wxSize& size) wxOVERRIDE
    {
        // For consistency with GetNextAvailableScale(), we must have
        // bitmap variants for 32, 48 and 64px sizes.
        const wxSize availableSizes[] = { 32, 48, 64 };
        if ( size.y <= 64 )
        {
            ... get the bitmap from somewhere ...
        }
        else
        {
            size_t n = GetIndexToUpscale(size);
            bitmap = ... get bitmap for availableSizes[n] ...;
            wxBitmap::Rescale(bitmap, size);
        }
 
        return bitmap;
    }
 
protected:
    double GetNextAvailableScale(size_t& i) const wxOVERRIDE
    {
        const double availableScales[] = { 1, 1.5, 2, 0 };
 
        // We can rely on not being called again once we return 0.
        return availableScales[i++];
    }
 
    ...
};
Parámetros
scale
La escala requerida, normalmente la misma que se pasa a GetPreferredBitmapSizeAtScale().
GetBitmap()

virtual wxBitmap wxBitmapBundleImpl::GetBitmap(const wxSize & size)

Recupera el mapa de bits de exactamente el tamaño dado.

Hay que tener en cuenta que esta función es no-const porque puede generar el mapa de bits bajo demanda y almacenarlo en caché.

GetDefaultSize()

virtual wxSize wxBitmapBundleImpl::GetDefaultSize() const

Devuelve el tamaño de los mapas de bits representados por este paquete en los DPI predeterminados.

Debe devolver siempre un tamaño válido.

GetIndexToUpscale()

size_t wxBitmapBundleImpl::GetIndexToUpscale(const wxSize & size) const

Devuelve el índice de la escala disponible más adecuada para ser ampliada al tamaño dado.

Ver DoGetPreferredSize() para un ejemplo de uso de esta función.

Parámetros
size
El tamaño requerido, normalmente el mismo que se pasa a GetBitmap().
GetNextAvailableScale()

virtual double wxBitmapBundleImpl::GetNextAvailableScale(size_t & i) const

Devuelve información sobre los mapas de bits disponibles.

Sobrescribir esta función es opcional y solo debe hacerse si se llama a DoGetPreferredSize() o GetIndexToUpscale(). Si lo hace, esta función debe devolver la siguiente escala disponible o 0.0 si no hay más.

Las escalas devueltas deben estar en orden ascendente y la primera escala devuelta, para el valor inicial i de 0, debe ser 1. La función debe cambiar i, pero los valores de este índice no tienen que ser consecutivos y sólo es utilizado por esta función en sí, el llamante solo lo inicializa a 0 antes de la primera llamada.

Ver DoGetPreferredSize() para un ejemplo de implementación de esta función.

GetPreferredBitmapSizeAtScale()

virtual wxSize wxBitmapBundleImpl::GetPreferredBitmapSizeAtScale(double scale) const

Devuelve el tamaño preferido que debe utilizarse en la escala dada.

Debe devolver siempre un tamaño válido.

Métodos y datos heredados

Esta clase hereda los métodos y datos miembro públicos y protegidos de wxRefCounter.