Giter Club home page Giter Club logo

dazibao's Introduction

DOCUMENTATION DE L'IMPLANTATION

. Les structures . Les fonctions d'accès aux données . exemple.dzb en mémoire

LES STRUCTURES

Dazibao_TLV_Type

Le type d'un TLV, dans une énumération, comme ça c'est pratique.

typedef enum { UNKNOW= -1, PADONE= 0, PADN= 1, TEXT= 2, PNG= 3, JPEG= 4, COMPOUND= 5, DATED= 6 } Dazibao_TLV_Type;

Dazibao_TLV

Un TLV : c'est des données stockés de la position n1 à n2 dans un fichier, et ça contient des données.

Dazibao_TLV_Type type : un type, comme juste en haut, peut etre utiliser comme un int. off_t position : une position dans le fichier. int length : une taille/longueur en octets. void *value : un pointeur vers sa valeur, void parce que ça valeur peut etre des données brutes (text,png,...) ou bien une autre structure.

[!] Pour les type de tlv dont les valeurs se compose de plusieurs infos on utilise des structures adaptés.

Dazibao_TLV_Dated_Value

La valeur d'un TLV Dated.

long timestamp : le timestamp ! Dazibao_TLV *element : un pointeur vers le tlv attaché à ce Dated.

Dazibao_TLV_Compound_Value

La valeur d'un TLV Compound.

int count : le nombre d'éléments qui le compose Dazibao_TLV **elements : un tableau de pointeurs vers les elements contenues.

Dazibao

Un dazibao est lié à un fichier et contient un array de pointeur vers ses tlvs.

char *file_path : chemin vers le fichier. int file_descriptor : pointeur vers le fichier. int file_size : taille du fichier. int tlv_count : nombre de tlv (à sa racine). Dazibao_TLV **elements : ses tlvs.

Et aussi...

Les structures suivantes sont toutes définies comme type. (#typedef)

FONCTIONS D'ACCÈS AUX DONNÉES

Presque toutes les fonctions on Dazibao *dazibao en entrée, c'est pour pouvoir récuperer le fd du fichier.

find_*

Les fonctions find* servent à trouver les tlv dans le fichier et crée de nouvelles structures pour les stocké. Remplissent aussi les champs type, offset, length.

find_next_tlv(Dazibao *dazibao, int offset); La position dans le fichier où la tlv commence.

find_next_tlv_array offset_start : position de départ dans le fichier pour la recherche offset_max : position max dans le fichier int *tlv_count : nombre de tlv trouvé retourne un tableau de pointeur vers ce qui a été trouvé.

load_*

pour charger la valeur du tlv en memoire on utilise les fonctions load, les fonctions prennent en parametre le tlv à charger, allou la mémoire et link au tlv->value

quand c'est txt, ou image : load_tlv_value_raw(Dazibao *dazibao, Dazibao_TLV *tlv)

dated : load_tlv_value_dated(Dazibao *dazibao, Dazibao_TLV *tlv) la fonction allou et rempli le Dazibao_TLV_Dated_Value et find_next_tlv_array() le prochain tlv

compound: load_tlv_value_compound(Dazibao *dazibao, Dazibao_TLV *tlv) allou de la place et find_next_tlv_array() ses elements + linkage

EXEMPLE.DZB EN MÉMOIRE

Voici comment est stocké en mémoire le fichier exemple.dzb après que le programme ait parcourue l'arbre.

[ Dazibao
| file path = "exemple.dzb"
| file size = 146270
| int tlv count = 4
| elements ->
    [0] -> [ Dazibao_TLV
            | type = 2 (TEXT)
            | position = 4
            | lenght = 265
            | *value = "All parts..."
        
    [1] -> [ Dazibao_TLV
            | type = 4 (JPEG)
            | position = 273
            | lenght = 56993
            | *value = binary image
            
    [2] -> [ Dazibao_TLV
            | type = 6 (DATED)
            | position = 57270
            | lenght = 36998
            | *value -> [ Dazibao_Dated_Value
                        | timestamp = 1383709705
                        | element -> [ Dazibao_TLV
                                     | type = 4 (JPEG)
                                     | position = 57278
                                     | lenght = 36990
                                     | *value = binary image

    [3] -> [ Dazibao_TLV
            | type = 6 (DATED)
            | position = 94272
            | lenght = 51994
            | *value -> [ Dazibao_Dated_Value
                        | timestamp =
                        | element -> [ Dazibao_TLV
                                     | type = 5 (COMPOUND)
                                     | position = 94280
                                     | lenght =
                                     | *value -> [ Dazbiao_TLV_Compound_Value
                                                 | count = 2
                                                 | **elements ->
                                                     [0] -> [ Dazibao_TLV
                                                             | type = 2 (TEXT)
                                                             | position = 94284
    	                                                     | lenght = 31
    	                                                     | *value = "..."
                                                         
           		                                      [1] -> [ Dazibao_TLV
           	                                              | type = 4 (JPEG)
           	                                              | position = 94319
            	                                      | lenght = 51947
                    	                              | *value = binary_image


dazibao's People

Contributors

anthonybt avatar joyez avatar tsalmon avatar

Watchers

 avatar  avatar  avatar

dazibao's Issues

Vue: gtk pixbuff

trouver un moyen de se passer de la SDL en se servant d'un pixbuff

TLV de type 0 & 1

Je propose de ne pas charger les TLV a ignorer, cela permet de faire l'opération de contraction plus simplement et de reduire les données a charger

pedantic

Si vous compilez avec cette norme, arretez tout de suite gtk ne la passe pas

Vue: repenser affichage date

une date ne pourra être assigné à une certaine TLV ou inséré dans une série de dates,
on ajoute une date dans un rep (si il y a de la place) ou a la racine du dazibao avec , de base, une tlv de type 1

(vue) foot_panel

Quand on clique sur le bouton "Date" ou sur "Content", il faut le changer par le bouton "Annuler" pour revenir a l'état initial de la fenêtre

vue: ImageView

adapté taille de la fenetre a l'image (si trop grand => moité ecran)

Src

Prière de mettre vos fichiers dans ce répertoire et non à la racine.

Merci

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.