Archivio

Posts Tagged ‘C’

Imel 0.2.7

7 giugno 2010 hds619 7 commenti

Rilasciata da qualche minuto la versione 0.2.7 di Imel.

Le novità di questa versione comprendono uno “snellimento” delle dipendenze, le uniche librerie richieste ora sono libfreetype6-dev e libfreeimage3-dev, un’aggiunta di nuovi formati in cui salvare ( XPM, PPM ( Ascii ), JP2, J2K ), un miglioramento nella lettura di quelli già presenti ( ora vengono salvati usando la libreria freeimage ) e una nuova modalità per salvarli ( al posto del nome può essere passato direttamente il puntatore a file ).

Inoltre:

  • imel_image_apply_noise (): permette di applicare un disturbo all’immagine.
  • imel_font_write_vstring () e imel_font_write_vstring_with_truetype_font (): permettono di scrivere direttamente in verticale.
  • imel_font_write_string () e imel_font_write_string_with_truetype_font (): abilitato il supporto al carattere di newline.
  • imel_image_apply_pattern (): consente ora di sommare o sottrarre i colori del pattern durante la sua applicazione.
  • IMEL_EFFECT_COLOR_TO_ALPHA: nuovo effetto che consente di rendere trasparente le aree in cui c’era una tonalità di colore ( uguale al Color to alpha presente in GIMP )
  • imel_image_perspective (): permette di inclinare i lati dell’immagine in modo simmetrico creando l’effetto “prospettiva”.

Ed altri bugfix..

Le informazioni dettagliate nel ChangeLog.

Link immancabile alla Documentazione ( HTML, PDF )

Link finale per scaricare il pacchetto della versione 0.2.7 :)

Imel 0.2.4 un pieno di novità!

8 novembre 2009 hds619 Nessun commento

A solo un mese dal rilascio della versione 0.2.3 procede a ritmo serrato lo sviluppo di imel giunto alla versione 0.2.4. Le novità al contrario di quanto si possa pensare. dato il poco tempo passato tra le due versioni, sono tante.

Tra le più importanti ritroviamo il supporto a pkg-config così da poter compilare staticamente senza dover scrivere manualmente tutte le librerie, possibilità di tracciare un ellisse e disegnare un cerchio, in più reso possibile il disegno di una linea o una curva con un’immagine così da poter realizzare l’effetto “pennello” presente in molti programmi di grafica e tante altre funzioni.

E novità più importante di tutte: aggiunto il supporto al formato BMP.

Il Changelog con tutte le modifiche dettagliate.

Colgo l’occasione per annunciare la partecipazione di una persona oltre a me a questo progetto: Simone “Skary” Scarinzi, per il momento ha aiutato nella creazione della funzione per il disegno di un ellisse ma per le prossime versioni ci regalerà altre funzioni riguardanti il disegno :)

Link pacchettoLink documentazione

P.s.: Il servizio HImages è stato aggiornato per avere il supporto alle bmp.

Ottenere il valore decimale da un numero binario in C

12 dicembre 2008 hds619 Nessun commento

Vi sarà capitata l’occasione di ritrovarvi una stringa contenente un numero binario e di doverlo convertire in un numero decimale ( o comunque memorizzarlo in una variabile ) e utilizzare i procedimenti più assurdi per farlo? No? Beati voi, a me è capitato.. anzi in particolar modo è capitato di avere i vari 1 e 0 divisi in varie variabili.. In questo post farò vedere un metodo, a mio avviso elegante, per ottenere la nostra decantata variabile contenente il valore decimale.

Ed ecco qui, subito subito la funzione:

unsigned char get_value_from_binary_string (const char *s)
{
 short int i;
 unsigned char byte = 0;
 
 if ( !s || strlen (s) != ( sizeof (unsigned char) * 8 ) )
      return byte;
 
 for ( i = (sizeof (unsigned char) * 8) - 1; i > -1; i-- )
       byte = ( byte | (s[(sizeof (unsigned char) * 8) - ( 1 + i )] - '0') ) << ( i ? 1 : 0 );
 
 return byte;
}

Naturalmente qua si parla di una stringa contenente il valore di un byte, ma è facilmente utilizzabili con stringhe contenenti valori di 2, 4, 8, 16, 32 e 64 byte utilizzando le variabili appropriate.
Il fulcro della conversione comunque sta in quelle due righe di for. 2 righe e si fa quello che molti altri farebbero in minimo 20 in modo osceno.

Ciauz ;)

Funzioni Standard.. poco Standard

7 agosto 2008 hds619 Nessun commento

Proprio poco fa stavo parlando in chat con Dani, mentre io insultavo quelli che hanno creato la strcmp ( in quanto se gli si passa uno dei due parametri a NULL fa andare il programma in Segmentation Fault che è una bellezza ), mi ha detto che la strcmp oltre a fare il semplice confronto tra le due stringhe restituisce anche la differenza tra i caratteri, e proprio per questo lui l’aveva utilizzata per riordinare alfabeticamente i pacchetti in slackyd.

Allora non sapendo questa cosa da niubbo della situazione mi son messo a fare un test:

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
#include <string.h>
 
int main(int argc, char **argv)
{
 if ( argc < 3 ) return 1;
 
 printf("Diff: `%d'\n", strcmp(argv[1], argv[2]));
 
 return 0;
}

Benissimo lo vado ad avviare e mi restituisce solo 0 ( uguali ), 1 o -1 ( non uguali ).. dopo vari attimi di stupore da parte sua, va a provare lo stesso identico codice e le stesse identiche stringhe passate come parametro sul suo computer e la funzione lì restituiva davvero la differenza tra le due stringhe!

Ora mi domando cosa renda così variabile una funzione standard che dovrebbbe avere lo stesso funzionamento su tutti i computer del mondo. La versione delle libc comunque era uguale giusto per cronaca. Da notare comunque anche che ho provato la strcasecmp che non dovrebbe far parte del C Standard, e restituisce la famosa differenza tra le due!

? Mah..

P.s.: Altra cosa che mi fa incazzare, se si passa un parametro null alla strcmp, o all’atoi perchè cavolo mi deve compromettere tutto il programma? cosa gli costa a quelli che hanno scritto la gnu c library mettere due piccolissime macro del tipo:

1
2
3
4
5
6
#define return_if_fail(cond) if ( !(cond) ) { \
                                  return; \
                             }
#define return_val_if_fail(cond, val) if ( !(cond) ) { \
                                           return (val); \
                                      }

per controllare che i parametri non siano nulli? BAH!

Categorie:programmazione Tag: , ,

LYS 1.0

14 marzo 2008 hds619 2 commenti

Nuovo servizio su HdS619.net, ovvero LYS ( Load Your Source ) un servizo che permette appunto di caricare online i propri sorgenti¹ e ottenere una pagina html dove verrà visualizzato il codice con la sintassi colorata e un link diretto al sorgente originale ( così da far contenti gli amanti dei colori e quello del bianco e nero ). Altre notizie su questo servizio ( e la pagina da cui poterlo utilizzare ) le trovate QUI.

¹Per il momento supporta solo sorgenti C

Categorie:News, Servizi Tag: , , , ,

COwH 2(beta)

12 marzo 2008 hds619 Nessun commento

zoom-cow.jpg
E’ nata la versione 2 di COwH ( MUccAH! ( battuta schifosa) Compile Online with HdS619 ), ovvero quel servizietto che forse alcuni di voi conoscono che permette di compilare online dei sorgenti in C per il sistema linux ( in particolare la compilazione avviene su Ubuntu 7.10 ).

Di seguito farò un breve elenco di ciò che c’era nella versione precedente e ciò che c’è in quella nuova. Prosegui la lettura…

Categorie:News, Servizi Tag: , , ,
Custom Avatars For Comments