void rendering_load_icons_for_slide (CairoDesklet *pDesklet, cairo_t *pSourceContext)
{
	CDSlideParameters *pSlide = (CDSlideParameters *) pDesklet->pRendererData;
	if (pSlide == NULL)
		return ;
	
	_compute_icons_grid (pDesklet, pSlide);
	g_print ("pSlide->iIconSize : %d\n", pSlide->iIconSize);
	
	Icon *pIcon;
	GList* ic;
	for (ic = pDesklet->icons; ic != NULL; ic = ic->next)
	{
		pIcon = ic->data;
		pIcon->fWidth = pSlide->iIconSize;
		pIcon->fHeight = pSlide->iIconSize;

		pIcon->fScale = 1.;
		pIcon->fAlpha = 1.;
		pIcon->fWidthFactor = 1.;
		pIcon->fHeightFactor = 1.;
		pIcon->fGlideScale = 1.;
		
		cairo_dock_fill_icon_buffers_for_desklet (pIcon, pSourceContext);
	}
}
void rendering_load_slide_data (CairoDesklet *pDesklet, cairo_t *pSourceContext)
{
	CDSlideParameters *pSlide = (CDSlideParameters *) pDesklet->pRendererData;
	if (pSlide == NULL)
		return ;
	
	_compute_icons_grid (pDesklet, pSlide);
}
static void calculate_icons (CairoDesklet *pDesklet)
{
	CDSlideParameters *pSlide = (CDSlideParameters *) pDesklet->pRendererData;
	if (pSlide == NULL)
		return ;
	
	_compute_icons_grid (pDesklet, pSlide);
	cd_debug ("pSlide->iIconSize : %d", pSlide->iIconSize);
	
	Icon *pIcon = pDesklet->pIcon;
	if (pIcon != NULL)  // on ne veut pas charger cette icone.
	{
		pIcon->fWidth = -1;
		pIcon->fHeight = -1;
	}
	
	GList* ic;
	for (ic = pDesklet->icons; ic != NULL; ic = ic->next)
	{
		pIcon = ic->data;
		if (CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (pIcon))
		{
			pIcon->fWidth = -1;
			pIcon->fHeight = -1;
		}
		else
		{
			pIcon->fWidth = pSlide->iIconSize;
			pIcon->fHeight = pSlide->iIconSize;
			cairo_dock_icon_set_allocated_size (pIcon, pIcon->fWidth, pIcon->fHeight);
			
			pIcon->fScale = 1.;
			pIcon->fAlpha = 1.;
			pIcon->fWidthFactor = 1.;
			pIcon->fHeightFactor = 1.;
			pIcon->fGlideScale = 1.;
		}
	}
}
static void calculate_icons (CairoDesklet *pDesklet)
{
	CDPanelParameters *pPanel = (CDPanelParameters *) pDesklet->pRendererData;
	if (pPanel == NULL)
		return ;
	
	_compute_icons_grid (pDesklet, pPanel);
	cd_debug ("pPanel->iIconSize : %d", pPanel->iIconSize);
	
	Icon *pIcon = pDesklet->pIcon;
	if (pIcon != NULL)
	{
		pIcon->fWidth = pPanel->iMainIconSize;
		pIcon->fHeight = pPanel->iMainIconSize;
		cairo_dock_icon_set_allocated_size (pIcon, pIcon->fWidth, pIcon->fHeight);
		
		pIcon->fScale = 1.;
		pIcon->fAlpha = 1.;
		pIcon->fWidthFactor = 1.;
		pIcon->fHeightFactor = 1.;
		pIcon->fGlideScale = 1.;
		
		pIcon->fDrawX = pPanel->fMargin;
		pIcon->fDrawY = pPanel->fMargin;
	}
	
	// les icones.
	double w = pDesklet->container.iWidth - 2 * pPanel->fMargin;
	double h = pDesklet->container.iHeight - 2 * pPanel->fMargin - pPanel->iMainIconSize;
	int dh = (h - pPanel->iNbLines * (pPanel->iIconSize + myIconsParam.iLabelSize)) / pPanel->iNbLines;  // ecart entre 2 lignes.
	int dw = (w - pPanel->iNbColumns * 2*pPanel->iIconSize) / pPanel->iNbColumns;  // ecart entre 2 colonnes.
	
	double x = pPanel->fMargin + dw/2;  // current icon position.
	double y = pPanel->fMargin + pPanel->iMainIconSize + dh/2 + myIconsParam.iLabelSize;
	int q = 0;  // num line/column
	GList* ic;
	for (ic = pDesklet->icons; ic != NULL; ic = ic->next)
	{
		pIcon = ic->data;
		if (CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (pIcon))
		{
			pIcon->fWidth = -1;
			pIcon->fHeight = -1;
		}
		else
		{
			pIcon->fWidth = pPanel->iIconSize;
			pIcon->fHeight = pPanel->iIconSize;
			cairo_dock_icon_set_allocated_size (pIcon, pIcon->fWidth, pIcon->fHeight);
		
			pIcon->fScale = 1.;
			pIcon->fAlpha = 1.;
			pIcon->fWidthFactor = 1.;
			pIcon->fHeightFactor = 1.;
			pIcon->fGlideScale = 1.;
			
			pIcon->fDrawX = x;
			pIcon->fDrawY = y;
			
			if (pPanel->bHorizontalPackaging)
			{
				x += 2*pPanel->iIconSize + dw;
				q ++;
				if (q == pPanel->iNbColumns)
				{
					q = 0;
					x = pPanel->fMargin + dw/2;
					y += pPanel->iIconSize + myIconsParam.iLabelSize + dh;
				}
			}
			else
			{
				y += pPanel->iIconSize + myIconsParam.iLabelSize + dh;
				q ++;
				if (q == pPanel->iNbLines)
				{
					q = 0;
					x += 2*pPanel->iIconSize + dw;
					y = pPanel->fMargin + pPanel->iMainIconSize + dh/2 + myIconsParam.iLabelSize;
				}
			}
		}
	}
}