Example #1
0
static int barPaint(GOC_HANDLER uchwyt)
{
	GOC_StBar *pasek = (GOC_StBar*)uchwyt;
	int i;
	GOC_StElement elem;
	GOC_POSITION w = goc_elementGetWidth(uchwyt);
	memcpy(&elem, pasek, sizeof(GOC_StElement));
	goc_elementGetLabelDrawer(uchwyt)(&elem, "");
	if ( pasek->nText == 0 )
		return GOC_ERR_OK;
	if ( pasek->rozmiar == GOC_BAR_COUNTEDSIZE )
		elem.width = w / pasek->nText;
	else
		elem.width = pasek->rozmiar;
	for ( i=pasek->start; i<pasek->nText; i++ )
	{
		if ( i<(elem.width%(pasek->nText)) )
			elem.width++;
		if ( elem.x + elem.width > pasek->x + w )
			elem.width = pasek->x + w - elem.x;
		if ( i != pasek->kursor )
			elem.color = pasek->color;
		else
			elem.color = pasek->kolorZaznaczony;
		goc_elementGetLabelDrawer(uchwyt)(&elem, pasek->tekst[i]);
		elem.x += elem.width;
		if ( i<(elem.width%(pasek->nText)) )
		{
			elem.x++;
			elem.width--;
		}
	}
	fflush(stdout);
	return GOC_ERR_OK;
}
Example #2
0
static int labelPaint(GOC_StLabel *napis)
{
//	char *line; // line do wypisania
//	unsigned int d; // d³ugo¶æ do kopiowania dla linii do wypisania
//	unsigned int p = 0; // przesuniêcie wzglêdem pocz±tku punktu pisania
	unsigned int i; // licznik
	GOC_POSITION height;
	if ( napis->nText == 0 )
		return GOC_ERR_OK;
	if ( !(napis->flag & GOC_EFLAGA_PAINTED) )
		return GOC_ERR_OK;

//	line = (char *)malloc(napis->width+1);
//	memset(line, 0, napis->width+1);
	
	height = goc_elementGetHeight((GOC_HANDLER)napis);
	for ( i = 0; i < height; i++ )
  	{
		GOC_StElement elem;
		if ( i + napis->start >= napis->nText )
			break;
		memcpy( &elem,  napis, sizeof(GOC_StElement) );
//		memset( line, ' ', napis->width );
//		d = strlen(napis->tekst[i+napis->start].line) > napis->width ? napis->width :
//			strlen(napis->tekst[i+napis->start].line);
//		switch ( napis->tekst[i+napis->start].flag & COC_EFLAGA_G_JUSTIFY )
//	  	{
//			case GOC_EFLAGA_RIGHT:
//				p = napis->width - d;
//				break;
//			case GOC_EFLAGA_LEFT:
//				p = 0;
//				break;
//			case GOC_EFLAGA_CENTER:
//				p = napis->width - d;
//				p >>= 1;
//				break;
//		}
		elem.flag = napis->tekst[i+napis->start].flag;
//		memcpy( line + p, napis->tekst[i+napis->start].line, d );
		elem.y += i;
		elem.color = napis->tekst[i+napis->start].color;
		goc_elementGetLabelDrawer( (GOC_HANDLER)napis )(
			&elem, napis->tekst[i+napis->start].line );
//		goc_textallcolor( napis->tekst[i+napis->start].color );
//		fputs( line, stdout );
	}
	napis->flag |= GOC_EFLAGA_SHOWN;
	fflush(stdout);
//	free(line);
	return GOC_ERR_OK;
}
Example #3
0
// bez konrtoli - odrysuj wskazana linie (pozycja na liscie)
static void listRedrawLine(GOC_HANDLER u, int pos)
{
	GOC_StList *lista = (GOC_StList*)u;
	GOC_StElement e;
	GOC_COLUMN *k;
	GOC_FUN_LABELDRAWER *drawer;
	int j; // licznik kolumn

	drawer = goc_elementGetLabelDrawer(u);
	memcpy(&e, lista, sizeof(GOC_StElement));
	goc_systemSendMsg(u, GOC_MSG_LISTSETCOLOR, &(e.color), pos);
	e.y += pos - lista->start + 1;
	(e.x)++;
	for ( j = 0; j < lista->nKolumna; j++ )
	{
		k = lista->pKolumna[j];
		e.width = k->position;
		if ( pos<k->nText )
			drawer(&e, k->pText[pos]);
		else
			drawer(&e, "");
		e.x += k->position;
	}
}
Example #4
0
static int goc_listPaint(GOC_HANDLER u)
{
	GOC_StList *lista = (GOC_StList*)u;
	int i; // licznik zdañ
	int j; // licznik kolumn
	int n; // maksymalna liczba wierszy
	GOC_COLUMN *k;
	GOC_StElement e;
	GOC_FUN_LABELDRAWER *drawer;

	if ( !(lista->flag & GOC_EFLAGA_PAINTED) )
		return GOC_ERR_OK;

	drawer = goc_elementGetLabelDrawer(u);

	memcpy(&e, lista, sizeof(GOC_StElement));
	e.color = lista->kolorRamka;
	goc_elementGetFrameDrawer(u)(&e, "*-*| |*-*");
	// rysowanie tytulu, jesli obecny
	if ( lista->pTytul )
	{
		GOC_StElement elTytul;
		memcpy( &elTytul, lista, sizeof(GOC_StElement));
		elTytul.color = lista->kolorRamka;
		elTytul.height = 1;
		elTytul.x += 2;
		elTytul.flag = GOC_EFLAGA_CENTER;
		if ( elTytul.width > 2 )
		{
			elTytul.width -= 4;
			if ( strlen(lista->pTytul)+2 < elTytul.width )
				elTytul.width = strlen(lista->pTytul)+2;
		}
		else
			elTytul.width = 0;
		drawer(&elTytul, lista->pTytul);

	}
	
	n = goc_listGetRowsAmmount(u);
	j=0;
	for ( i=lista->start; i<n; i++ )
	{
		if ( i - lista->start > goc_elementGetHeight(u)-3 )
			break;
		goc_systemSendMsg(u, GOC_MSG_LISTSETCOLOR, &(e.color), i);
//		j %= lista->nKolumna;
		e.y++;
		e.x = lista->x;
		(e.x)++;
		for ( j = 0; j < lista->nKolumna; j++ )
		{
			k = lista->pKolumna[j];
			e.width = k->position;
			if ( i<k->nText )
				drawer(&e, k->pText[i]);
			else
				drawer(&e, "");
			e.x += k->position;
		}

//		if (!j)
//		{
//		}
//		e.width = lista->pKolumna[j];
//		j++;
	}
	if (lista->kursor != -1)
		goc_gotoxy(
			goc_elementGetScreenX(u)+1,
			goc_elementGetScreenY(u)+(lista->kursor-lista->start) + 1);
	fflush(stdout);
	lista->flag |= GOC_EFLAGA_SHOWN;
	return GOC_ERR_OK;
}