[Linuxtrent] Re: [OT] C: this

  • From: lele@xxxxxxxxxx (Lele Gaifax)
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Wed, 22 May 2002 09:01:26 +0200

>>>>> On Wed, 22 May 2002 02:01:14 +0200, "Lo'oRiS il Kabukimono" 
>>>>> <lo_oris@xxxxxxxxx> said:

    >> Scusa, ma come "non si vedono proprio"?? Può una funzione C
    >> essere sicura che il parametro che le è arrivato è proprio del
    >> tipo previsto?

    LiK> No, non intendevo quello!  Bè diciamo che in un certoqualmodo
    LiK> in effetti può fare un controllo del genere: la funzione usa
    LiK> il parametro, e se si accorge di essere ancora viva (= no
    LiK> segfault) è ragionevole supporre che il parametro sia
    LiK> corretto ^__^

    >> codice scritto con Allegro (che non ho ancora capito
    >> esattamente cosa sia, tra l'altro).

    LiK> Allegro = Allegro Low Level Game Routines http://alleg.sf.net
    LiK> Sottotitolo: "a game programming library"

    LiK> È la libreria per la *grafica* ¹ 2D più potente e portabile
    LiK> ¹... e, no, non credo di poter essere smentito 8) Aggiungi
    LiK> che oltre alla grafica fa suono, input, timing, "packfiles"
    LiK> (anche compressi e criptati),...

Mah, sono andato a curiosare, e nel Tutorial non sembro trovare buoni
esempi di approccio OO alla cosa. Sono andato in fretta, senza dubbio,
ma per la verità non ne ho trovati proprio (né di buoni, né altri) :-! 

Uno per tutti:

4.4.2 Making things appear to move

The simplest way to make something appear to move is to erase it from
where it is and put it on the screen again somewhere else...

int x;
install_timer();                           /* required for `rest' */
circlefill (screen, 0, 100, 5, 15);        /* draw first time */
for (x = 1; x < 320; x++) {               /* loop across the screen */
    rest (10);                             /* slow it down */
    circlefill (screen, x - 1, 100, 5, 0); /* erase from last place */
    circlefill (screen, x, 100, 5, 15);    /* redraw at new place */
}

Come "cancellare da dov'era"? Ma in ambito OO, è l'oggetto l'unico
depositario di questa informazione!!

Confronta con questo esempietto tratto da Evas, la libreria grafica
sviluppata da quel pazzo furioso di Rasterman per Enlightement DR17:

object = evas_add_line(evas);
evas_set_line_xy(evas, object, 220.0, 240.0, 390.0, 380.0);
evas_set_color(evas, object, 30.0, 80.0, 80.0, 200.0);
evas_show(evas, object);

oppure con questo

o = evas_object_get_named(evas_view, "pointer");
if (o) 
 {
    evas_move(evas_view, o, mouse_x, mouse_y);
    if (evas_pointer_in(evas_view) || evas_pointer_in(evas_control))
       evas_show(evas_view, o);
 }

Insomma, pur non pronunciandomi sulla bontà della libreria, non ci
vedo grandi segni di OO, contrariamente a quanto ho visto fare in Evas:
http://enlightenment.sf.net/pages/evas.html ha un bel manualone in
pdf, ricco di esempietti con relativo "screenshot".

E' veramente Impressive!  Su Debian c'è un pratico `evas_demo',
linkato staticamente, vale quasi uno screen saver :-)

ciao, lele.
-- 
nickname: Lele Gaifax   | Quando vivro' di quello che ho pensato ieri
real: Emanuele Gaifas   | comincero' ad aver paura di chi mi copia.
email: lele@xxxxxxxxxx  |               -- Fortunato Depero, 1929.

-- 
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con SOGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxxxxxx


Other related posts: