Vous êtes sur la page 1sur 128

STAGIAIRE SIMONJOLIET

GRENOBLE JUILLET\SEPTEMBRE2010

MMOIRE DE STAGE
REMANIEMENT DE LINTERFACE HOMME MACHINE DUN LOGICIEL VOCATION PROFESSIONNELLE

MATRE DE STAGE Mr PASCALOTTENIO

RESPONSABLE DE LA FORMATION Mr ARNAUDSCHAAL

\2010

CENTRE TECHNIQUE DU PAPIER

2\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\I

CENTRE TECHNIQUE DU PAPIER

Imprim Grenoble en 12 exemplaires CTP - Septembre 2010

SIMONJOLIET 3\128

\2010

CENTRE TECHNIQUE DU PAPIER

4\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\I

CENTRE TECHNIQUE DU PAPIER

PREFACE
Le prsent travail a t ralis de Juillet Septembre 2010 au Centre Technique du Papier (CTP) Grenoble. Il porte sur la restructuration de lInterface Homme-Machine dun logiciel de mesures professionnel, au sein du service Capteurs Modlisation & Traitements de donnes (Unit Scientifique & Technique n10). Cette mission fut ralise au cours dun stage de 9 semaines dans le cadre de la validation du Master 1 Chef de Projet en Informatique & Rseaux dlivr par lEcole Suprieure Angevine dInformatique & de Productique. Ce stage a bnfici dune compensation financire de la part du Centre Technique du Papier. Je souhaite adresser mes remerciements aux personnes qui m'ont apportes leur aide et qui ont contribues la russite de cette mission ainsi qu l'laboration de ce mmoire. Je tiens remercier sincrement mon matre de stage, Monsieur Pascal Ottenio, qui a toujours su se rendre disponible pour rpondre mes questions ou pour maiguiller dans mon travail. Je souhaite remercier de mme Monsieur Davy Soysouvanh qui ma appuy et ma consacr beaucoup de son temps pour la rsolution de certains points de la mission. Mes remerciements sadressent galement Monsieur Pascal Borel, sans qui il maurait t dlicat de comprendre les spcificits du fonctionnement de MorFi et dagir en consquence. Je remercie de plus Monsieur Guy Eymin Petot Tourtollet pour ses conseils en tant que directeur de service ; tout comme les autres membres de lUST10, Monsieur Jean Ruiz et Monsieur Thierry Lamboley, Monsieur Didier Moineau sur la partie fonctionnalit en tant que technico-commercial de la filiale TechPap vendant le produit et Monsieur Franois Cottin pour son regard en tant quutilisateur de ce systme. Je noublie pas non plus Madame Sandrine Poncet-Pappini, responsable de la communication au sein du CTP, qui jai eu le plaisir de soumettre mes travaux et qui ma aiguill sur la partie graphique. Lintitul de la mission ma tout de suite intress lors de mes dmarches de recherche de stage. Japprcie particulirement les projets denvergure, prenants et motivants. Ce projet qui consistait retravailler linterface dun logiciel professionnel avait ces caractristiques. Durant toute la dure de ce stage, mon travail a t rellement considr. Jai eu la chance de voir mes propositions techniques trs souvent valides par lquipe, ce qui ma permis de me sentir encore plus investi dans ce projet. Ce stage aura eu comme plus-value, en dehors du contexte professionnel, de me faire dcouvrir Grenoble et sa rgion. Jai pu apprcier les trois magnifiques massifs que sont la Chartreuse, Belledonne et le Vercors, ainsi que la Haute-Savoie grce mes proches qui ont rendus possibles des sjours agrables. Grenoble fut pour moi un cadre idal pour ce stage puisque jai pu pratiquer la randonne en montagne. Jai su apprcier une collocation dans un quartier trs chaleureux, adoss la Bastille (qui devint rapidement, comme pour beaucoup de grenoblois, ma promenade de prdilection), le long des quais de lIsre. Mon matre de stage a eu son rle dans cette dcouverte, pour mavoir propos de partager avec lui une randonne sur la Dent de Crolles. Je le remercie une nouvelle fois pour avoir deux reprises relu mon mmoire maidant effectuer les corrections sur le fond et sur la forme, ainsi que ma sur Bndicte, en tant que personne extrieure au projet et non initie la partie technique pour la dernire relecture. Cela ma permis de mettre en lumire les parties au contenu complexe et les adapter en consquence. Sur de nombreux plans, ce stage fut donc pour moi une exprience fort enrichissante. Jai pris grand plaisir travailler sur ce projet. Jespre que ce sentiment fut rciproque toutes les personnes impliques mes cts, de prs ou de loin, dans la concrtisation de cette mission.

SIMONJOLIET 5\128

\2010

CENTRE TECHNIQUE DU PAPIER

6\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\I

CENTRE TECHNIQUE DU PAPIER

\ TABLE DES MATIERES


\ I. \ I.1 \ I.2 Introduction....................................................................................................................................................11 Prambule...................................................................................................................................................11 Le papier .....................................................................................................................................................13 Rappels historiques ..........................................................................................................................13 Prsent et avenir ...............................................................................................................................14 La fabrication du papier ..................................................................................................................14 Un monde de fibres .........................................................................................................................17

\ I.2.1. \ I.2.1. \ I.2.2. \ I.2.3. \ II.

Le site de Grenoble .......................................................................................................................................20 Les entreprises.......................................................................................................................................20 Le Centre Technique du Papier ................................................................................................20 La filiale TechPap ........................................................................................................................25 Le partenaire FCBA ....................................................................................................................26 Le regroupement InTechFibres ................................................................................................26 La plate-forme technologique TekLiCell .................................................................................27 Lcole Pagora ..............................................................................................................................27 Le rseau CTI...............................................................................................................................27

\ II.1

\ II.1.1. \ II.1.2. \ II.1.3. \ II.1.4. \ II.1.5. \ II.1.6. \ II.1.7. \ III. \ III.1

Le projet .....................................................................................................................................................28 Le systme danalyses MorFi ..............................................................................................................28 Le fonctionnement de MorFi ....................................................................................................29 Partie logicielle .............................................................................................................................30 Considrations structurelles des sources .................................................................................30

\ III.1.1. \ III.1.2. \ III.1.3. \ III.2

Portage....................................................................................................................................................33 Compilation sous Microsoft Visual C++ 6.0 .........................................................................33 Recompilation sous Microsoft Visual C++ 2010 ..................................................................34

\ III.2.1. \ III.2.2. \ IV. \ IV.1

Ralisation technique ................................................................................................................................38 Runion de pr-production.................................................................................................................38 Aspect initial de MorFi ...............................................................................................................38

\ IV.1.1. \ IV.2 \ IV.3

Ralisation technique ...........................................................................................................................39 Choix technologiques...........................................................................................................................40 La bibliothque Chart Director .................................................................................................40 Liaison graphique au systme dexploitation ..........................................................................51 Redfinition des formulaires......................................................................................................52 Le Ruban.......................................................................................................................................52 Cration dun nouveau logotype ...............................................................................................57 Cration dun fichier de configuration .....................................................................................58 Gnration automatique des fichiers de configuration .........................................................61 SIMONJOLIET 7\128

\ IV.3.1. \ IV.3.2. \ IV.3.3. \ IV.3.4. \ IV.3.5. \ IV.3.6. \ IV.3.7.

\2010

CENTRE TECHNIQUE DU PAPIER

\ IV.3.8. \ IV.3.9. \ IV.3.10. \ IV.3.11. \ IV.3.12. \ IV.3.13. \ IV.3.14. \ IV.3.15. \ IV.3.16. \ IV.3.17. \ IV.3.18. \ IV.3.19. \ IV.3.20. \ V.

Ajout de nouvelles fonctions au ruban ....................................................................................62 Ajout dun logotype externe ......................................................................................................64 Nettoyage du code source..........................................................................................................65 Gestion de limpression ..............................................................................................................65 Gestion de llment vide...........................................................................................................67 Externalisation de la localisation ...............................................................................................67 Rendu dynamique de la barre de menu ...................................................................................70 Ajouts de raccourcis clavier .......................................................................................................71 Ajout de la fonction Copier .......................................................................................................72 Dplacement des fentres ..........................................................................................................73 Gestion dun lment double fentre....................................................................................74 Fusion des codes sources ...........................................................................................................74 Finalisation de la nouvelle version ............................................................................................75

Gestion de projet ...........................................................................................................................................76 Mise en place de la charte graphique logicielle ................................................................................76 Intervenants au projet ..........................................................................................................................76 Outils de gestion de projet ..................................................................................................................76 Diagramme PERT.......................................................................................................................76 Organisation Breakdown Structure (OBS)..............................................................................77 Work Breakdown Structure (WBS) ..........................................................................................78 Diagramme de GANTT planifi...............................................................................................79 Diagramme de GANTT rel .....................................................................................................80

\ V.1 \ V.2 \ V.3

\ V.3.1. \ V.3.2. \ V.3.3. \ V.3.4. \ V.3.5. \ V.4

Compte rendu de runion ...................................................................................................................81 Runion du 16 Juillet 2010.........................................................................................................81 Runion du 23 Aot 2010 ..........................................................................................................82 Runion du 10 Septembre 2010 ................................................................................................83

\ V.4.1. \ V.4.1. \ V.4.2. \ VI. \ VII. \ VII.1 \ VII.2 \ VII.3 \ VIII.

Conclusion .................................................................................................................................................85 Bibliographie ..............................................................................................................................................86 Rfrences..............................................................................................................................................86 Table des figures ...................................................................................................................................87 Liens........................................................................................................................................................89 Annexes ......................................................................................................................................................93 Spcifications techniques du systme MorFi ...............................................................................93 Rpartition gographique des systmes MorFi existants ...........................................................94 Procdure de mise aux normes CRT du programme.................................................................96 Correction des occurrences ...................................................................................................97 Changement du niveau des alertes .......................................................................................98 Dsactivation des avertissements en erreurs ......................................................................98

\ VIII.1 \ VIII.2 \ VIII.3

\ VIII.3.1. \ VIII.3.2. \ VIII.3.3.

8\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\I

CENTRE TECHNIQUE DU PAPIER

\ VIII.3.4. \ VIII.4 \ VIII.5

Inscription en dur de la non-dprciation ..........................................................................99

Considrations sur les formulaires ............................................................................................. 100 Mmorandum dutilisation de fonctions normes CRT et Posix.......................................... 102 Correspondance des fonctions .......................................................................................... 102

\ VIII.5.1. \ VIII.6 \ VIII.7 \ VIII.8

Mmorandum des nouvelles fonctionalits de MorFI v8.0 ................................................... 103 Structure du fichier dinterface ................................................................................................... 105 Procdure de localisation des formulaires................................................................................. 106 Ajout des entres dans le fichier de localisation ............................................................. 106 Liaison des lments de localisation avec le formulaire................................................. 107 Traduction en deux langues du fichier de localisation ................................................... 108

\ VIII.8.1. \ VIII.8.2. \ VIII.8.1. \ VIII.9 \ VIII.10 \ VIII.11 \ VIII.12

Procdure dajout dun lment double fentre .................................................................... 109 Procdure de dmonstration de MorFi v8.0............................................................................. 111 Planche de proposition de logotypes ......................................................................................... 112 Rendu initial de MorFi ................................................................................................................. 113 Maquette initiale ................................................................................................................... 113 Rendu initial .......................................................................................................................... 113

\ VIII.12.1. \ VIII.12.1. \ VIII.13

Rendu final de MorFi ................................................................................................................... 114 Maquette finale ..................................................................................................................... 114 Rendu final ............................................................................................................................ 114

\ VIII.13.1. \ VIII.13.2. \ VIII.14 \ VIII.15 \ VIII.16 \ VIII.17

Une impression sous MorFi 7.13.00 .......................................................................................... 115 Une impression sous MorFi 8.0 ................................................................................................. 116 Bibliothque logicielle .................................................................................................................. 117 Codes sources ................................................................................................................................ 118 Structure de donnes du fichier dinterface ..................................................................... 118 Fonction de Gestion de llment vide ............................................................................ 118 Partie Localisation................................................................................................................ 119 Fonction de capture............................................................................................................. 120 Fonction dinterversion des lments graphiques .......................................................... 120 Fichier XML de liaison aux common-controls ............................................................... 121

\ VIII.17.1. \ VIII.17.2. \ VIII.17.3. \ VIII.17.4. \ VIII.17.5. \ VIII.17.6. \ VIII.18

Correspondance des lments .................................................................................................... 122

SIMONJOLIET 9\128

\2010

CENTRE TECHNIQUE DU PAPIER

REMANIEMENT DE LINTERFACE HOMME MACHINE DUN LOGICIEL VOCATION PROFESSIONNELLE

10\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\I

CENTRE TECHNIQUE DU PAPIER

\ I.

INTRODUCTION
\ I.1 PREAMBULE

La mission consiste remodeler lInterface Homme-Machine (IHM) dun logiciel professionnel portant sur lanalyse morphologique des fibres du papier, nomm MorFi. Ce logiciel est dvelopp depuis 1996 par le Centre Technique du Papier ; il est commercialis par sa filiale, TechPap. Ce logiciel reprsente la pice maitresse de leur catalogue commun ; cest pourquoi il a t choisi pour initier le mouvement du renouvellement de linterface gnrale de ce catalogue. La problmatique de linterface na en effet jamais t lordre du jour au cours de la (longue) vie de ce logiciel, cela pose bien videment un problme aujourdhui. Afin dapprhender au mieux la question, la mission sera divise en deux parties. La premire concernera les moyens mis en uvre pour redfinir le style graphique de ce logiciel. La seconde sera ltude dune translation des solutions mises en uvre pour cette application dautres produits, dans une optique de standardisation dun catalogue logiciel. Le plan utilis sera une dmarche linaire reprsentant de manire chronologique les travaux effectus dans le but de rpondre la question globale. Cette approche est en effet la plus mme de reflter ce travail, puisque la hirarchie des phases de rflexion est en liaison directe avec les mises en uvre concrtes de solutions. De plus cette mission a pour but de dboucher sur deux produits, dont la production de lun, c'est--dire lapplication de la mthode de redfinition, est conditionne par lautre, la production de la nouvelle interface du logiciel. Ces deux produits doivent tres livrables au terme de cette mission de recherche et de dveloppement. LInterface Homme Machine (IHM) est aujourdhui la cl de vote de tout systme informatique. Le mouvement imprim par les diteurs de logiciels nous poussent en effet penser que la forme prvaut sur le fond, aujourdhui de faon plus systmatique encore. En effet il existe dans le paysage actuel des logiciels dont la base na que trs peu volue depuis leur cration, mais o chaque rvision apporte son lot damliorations graphiques. Celles-ci ont pour but doffrir une exprience plus conviviale pour lutilisateur, plus attrayante et esthtiquement cohrente, au dtriment de relles restructurations potentiellement plus bnfiques. Quune IHM actuelle soit de plus en plus pure est la preuve de lvolution cohrente de linformatique. Il est en effet normal de sloigner du matriel afin de brasser un public plus large, qui nest dune part pas au fait du fonctionnement dune machine et qui na dautre part pas besoin de ltre. Lutilisateur actuel possde une exigence dmesure que lui-mme ignore en matire dinterface. Cette exigence est le fruit dun travail colossal commenc depuis moins dune quinzaine dannes par une majorit des acteurs du monde logiciel. Ce travail na pourtant jamais eu de vocation purement philanthropique. Il est en fait purement conomique et ce pour deux raisons : la premire est quune interface plus conviviale signifie un plus large public potentiel, puisquune nouvelle Interface HommeMachine doit toujours avoir pour objectif de simplifier lapprentissage dun logiciel. La seconde est quune nouvelle interface est un moyen comme un autre de se dmarquer par rapport la concurrence. Une chose est sre, il nest pas de logiciel grand public actuel qui ne prend pas en compte cette ralit. La surenchre dattractivit est la fois un cercle vertueux et vicieux : vertueux car cela force les dveloppeurs introduire une dmarche de rflexion synthtique par rapport aux contrles offerts lutilisateur et donc finalement cela les obligent penser leurs utilisateurs ; vicieux puisque cela alourdi de manire significative le dveloppement et donc les cots de production dun logiciel. De plus cela trompe lutilisateur qui croit utiliser un nouveau logiciel qui nest en fait bien souvent quune surcouche graphique apporte une base existante. Enfin cette dmarche chappe tout contrle. Il est impensable de nos jours quun diteur majeur livre une nouvelle version dun logiciel sans en retravailler linterface. Ce besoin nmane pourtant pas des utilisateurs ; cest une contrainte tacite rsultant du dictat dditeurs puissants qui imposent un style que tout dveloppeur doit absolument intgrer, sous peine de voir les utilisateurs bouder la solution qui leur est propose.

SIMONJOLIET 11\128

\2010

CENTRE TECHNIQUE DU PAPIER

Dans le cas prsent, le logiciel sur lequel porte le travail nest pas vocation grand public. En effet les besoins et les attentes des utilisateurs professionnels et grand public sont initialement distincts : il semblerait donc que pour ce travail, le fond soit infiniment plus important que la forme. Mais comment apprcier lInterface Homme-Machine dun logiciel qui nest pas vocation grand public ? Le monde industriel se croyait exclu de cette spirale ; il nen est rien. En ralit le retard accumul par des annes de dveloppement de fond de logiciels professionnels o la forme nest pas primordiale, devient dommageable et commercialement parlant, hasardeux. Un utilisateur actuel, quel quil soit, connait malgr lui ce que linformatique offre en terme dinterface. Cet utilisateur possdera alors les mmes attentes pour tout logiciel auquel il sera confront, quil soit grand public ou professionnel, quel que soit son besoin. Il est donc primordial de prendre en compte cette contrainte dans le dveloppement de nouveaux logiciels, quils soient vocation professionnelle ou non. Ce constat nous amne en toute logique dterminer la problmatique suivante : Comment apprhender le remodelage dune Interface Homme-Machine dun logiciel professionnel ? Cette question est lgitime dans la situation actuelle, puisquun client pourra tre rticent face lacquisition dun logiciel professionnel dont laspect ne correspond pas ce quil connat. Dans ce cas, son avis est bien videment important. Dautant plus que ce mme remodelage pourrait tre inclus dans une dynamique plus large, celle de la dfinition dun style commun toute une gamme de logiciel. Offrir une cohsion dans une gamme logicielle peut tre considr comme une priorit. Cest avant tout un moyen de communication percutant double action : fdrer graphiquement une gamme de logiciels est un argument commercial imparable pour le prestataire et la standardisation des interfaces est bien videmment rassurante pour le client. Mais lorsque le catalogue logiciel existe dj, implanter de telles donnes nest pas chose vidente. Les logiciels nont pas les mmes fins, ils nont pas les mmes prrequis et ne sont pas toujours dvelopps sur la mme plateforme. Il est alors ncessaire dapprhender les multiples facettes de la question afin doffrir une solution standardise. La solution qui permettra, dune part, doffrir les moyens dun renouvellement dune Interface Homme-Machine sur un logiciel existant, et dautre part, de prvoir lintroduction de ces nouvelles contraintes dans les dveloppements futurs. Une question demeure : face une tche dune telle ampleur, par o commencer cette redfinition ? Si plusieurs choix sont possibles, la meilleure solution reste sans conteste le logiciel le plus distribu. Il deviendra ainsi le vecteur auprs des clients de ce renouveau graphique , incitant ceux-ci observer plus attentivement un catalogue de logiciels, demander une mise jour dun autre, tout en offrant le confort dune gamme standardise. Rsolument, llment le plus distribu doit tre le premier se voir offrir une cure de jouvence avant dappliquer un visuel similaire dautres applications. Afin dapprhender au mieux la mission, le contexte inhrent celle-ci est prsent avant toute chose. Aussi, il est propos de sattarder quelques temps sur des considrations qui concernent respectivement : le papier en tant que support, les fibres du papier et lenjeu de leur analyse morphologique, afin de cerner au mieux le rle du logiciel sur lequel se base ltude. Enfin seront prsents le centre de recherche et ses divers satellites tels que sa filiale TechPap, entre autre charge de la vente de ce logiciel.

12\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\I

CENTRE TECHNIQUE DU PAPIER

\ I.2

LE PAPIER
\ I.2.1. Rappels historiques

Le mot papier provient du latin papyrus ; cest une matire fabrique partir de fibres de cellulose vgtale. Typiquement, il se prsente sous la forme dune mince feuille compos de cellulose dorigine vgtale dilu dans leau puis sch sur une surface plane. Ainsi, cette appellation regroupe un trs grand nombre de produits, notamment lexemple bien connu de la gupe papier, qui confectionne son nid en rgurgitant de la cellulose malaxe. Le processus de fabrication du papier na quasiment jamais chang depuis sa dcouverte. Il se fait en deux tapes : la dfibrillation de la matire premire dans leau afin den extraire les fibres, puis la formation de feuilles. A ce moment, la pte est place sur surface poreuse, travers laquelle leau peut sgoutter. La mise au point du papier daterait du IIIe sicle avant J.-C. en Chine En Europe, vers 1440, Johannes Johann Gutenberg donne naissance limprimerie, et permet la diffusion dcrits en masse ; lutilisation et la fabrication du papier explosent. partir du XVIIe sicle, le sud de la France devient une trs grande rgion papetire ; jusquaux guerres de fin de rgne de Louis XIV, ces rgions deviennent l'un des plus grands centres de production de papier du monde occidental. Cest incontestablement au XIXe sicle que la fabrication du papier sindustrialise avec linvention de la premire machine papier en continu de Louis Nicolas Robert (1761- 1828) en 1798. Vers 1850 apparat la premire machine fabriquer les cartons multicouches. La production de chanvre ralentit et celui-ci devient donc rare et cher. Des difficults dapprovisionnement en chiffon se font sentir et lindustrie cherche de nouvelles matires premires. Le bois commence progressivement remplacer le chanvre vers 1840. La deuxime moiti du XIXe sicle est marque par le recours la chimie. Les travaux du franais Anselme Payen - le centre de documentation commun au CTP ainsi qu lcole INP Pagora est nomme en son honneur - montrent que dans toute matire vgtale existe une substance blanche et fibreuse, la cellulose, et quil est possible de la rcuprer par des ractions chimiques. Ces dcouvertes permettent dobtenir des fibres de meilleure qualit et donc daugmenter les vitesses de production. En 1937, aux tats-Unis le Marihuana Tax Act est adopt sous la pression des lobbys de propritaires forestiers galement propritaires de la presse, rend la production du chanvre de papeterie trop contraignante. Il ne sera alors plus utilis que pour les billets et le papier cigarette. Les tats-Unis deviendront ds lors le premier producteur de papier, majoritairement forestier et le sont encore de nos jours, largement devant la Chine, le second (80,8 contre 37,9 millions de tonnes), participant de fait une des premires causes de dforestation de la plante. Lindustrialisation lourde est alors lance. En 1908, la plus grosse machine a une laize1 de 4,30 m et roule 165 m/min. En 1910 la vitesse de 200 m/min est atteinte. En 1935, la plus grosse machine fait 8,15 m de laize et tourne 425 m/min. Le cap des 1000 m/min est franchi en 1958. Actuellement, les machines font jusqu 10 m de laize et fournissent un rythme de prs de 2000 m de papier par minute. (Yan, 2006). ; (INPG, 2003) ; (COPACEL, 2007)

La laize dsigne la largeur de bande de papier.

SIMONJOLIET 13\128

\2010

CENTRE TECHNIQUE DU PAPIER

\ I.2.1.

Prsent et avenir

Le papier est actuellement esclave des problmes cologiques quil induit, lis la dforestation. Ceci malgr lessor du recyclage du papier et le retour progressif de la production de plantes fibres pousse rapide dites fibres annuelles et cologique comme le chanvre, lalpha, le coton ou le lin. A lheure de la dmatrialisation et du document lectronique, le papier na pas dit son dernier mot. En effet si les technologies de production du papier nont que trs peu volues, lutilisation qui en est faite ne cesse dvoluer. Lexemple du billet de banque est flagrant : il est possible dquiper un papier, qui nest aprs tout quun support, des dernires innovations technologiques. Cest dailleurs un des enjeux actuels du CTP : dvelopper des papiers intelligents , ou inviolables, base de puces RFID2, ou autre flashcode3. Ces technologies nen sont qu leurs balbutiements, il est pourtant certain que lavenir du papier sera, paradoxalement, numrique. \ I.2.2. La fabrication du papier \ I.2.2.1. La matire premire

Le bois constitue la principale source de matire premire fibreuse vierge dans la fabrication du papier. En effet, parmi l'ensemble des matires premires fibreuses, nous estimerons 60% le taux de fibres issues du bois, 35% le taux de fibres recycles et 5% le taux de fibres vgtales. Deux grandes familles darbres sont utilises dans lindustrie papetire, majoritairement des feuillus, mais aussi des rsineux. Chez les rsineux, les fibres appeles alors trachides ont une longueur moyenne de 2 4mm. Elles donnent de bonnes caractristiques mcaniques la pte. Dans cette famille sont utiliss essentiellement le pin, le sapin, l'pica. Chez les feuillus, les fibres sont plus courtes que les trachides : environ 1mm. La sve circule ici dans des vaisseaux. Les fibres de feuillus vont donner au papier les proprits optiques comme l'opacit, et l'imprimabilit. La papeterie utilise principalement le bouleau, le htre, le tremble, le charme et l'eucalyptus. Les constituants principaux sont : Les hydrates de carbone : 60 80 % du bois La cellulose Les hmicelluloses Les substances phnoliques : 20 30 %, Les lignines, constitues de molcules complexes et htrognes, Les tanins, les substances colores,...

Les constituants restants sont des cires, graisses, substances minrales, protiques ou peptiques prsentes en faible quantit.

\ FIGURE I.2.2-1 Fibres la surface dun papier Kraft

Radio Frequency Identification : mthode pour mmoriser et rcuprer des donnes distance en utilisant des marqueurs appels radio-tiquettes , qui peuvent tre colles ou implantes dans des objets ou produits. 3 Flashcode est la marque des codes-barres 2D dveloppe par lAssociation franaise du multimdia mobile. Ces pictogrammes composs de carrs peuvent notamment tre dcods par des tlphones mobiles disposant du lecteur flashcode.

14\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\I

CENTRE TECHNIQUE DU PAPIER

Ainsi les macromolcules se groupent pour former des faisceaux de fibrilles puis des fibres. Les fibres sont soudes entre elles grce une structure appele lamelle mitoyenne, contenant une forte proportion de lignine, responsable de leur rigidit. C'est un lment qu'il faudra soit dissoudre (produits chimiques), soit assouplir (temprature) pour extraire du bois des fibres souples et individualises. \ I.2.2.2. Lextraction des fibres

Il existe deux mthodes dextraction des fibres du bois dans le but de raliser une pte papier : la mthode mcanique et la mthode chimique. La mthode mcanique

La pte dite mcanique est une pte papier dont le procd dextraction de base est purement mcanique. Toutes ces ptes sont appeles ptes haut rendement. Elles ont ensuite besoin d'tre classes (tri des fibres), pures (limination des impurets) et gnralement blanchies suivant leur utilisation, mais devront de prfrence tre utilises sur site car le schage dtruit une bonne partie de leurs caractristiques mcaniques (comme nous le verrons, chaque manipulation induit forcment une fragilisation des fibres). Pour la commercialisation, elles sont sches sous forme de flocons et vendues en balles de 200 300 kg. Elles entrent dans la composition du papier journal, du papier pour magazines, et moindre chelle dans celle des papiers usage graphique (dition, bureau, criture, enveloppe, affiche, imprimante), du carton, des papiers sanitaires et domestiques. Globalement ces ptes haut rendement ont les caractristiques suivantes : Les aspects positifs - Prix de revient faible puisque le rendement est lev - Bonne opacit, bonne aptitude au calandrage4 - Bonne imprimabilit Les aspects ngatifs - Mauvais vieillissement - Peluchage - Caractristiques mcaniques plus faibles que les ptes chimiques La mthode chimique

Cette mthode s'adaptent aux feuillus comme aux rsineux. Le principe consiste cuire les copeaux dans un racteur chimique appel lessiveur, avec un liquide constitu dagents chimiques. Cette cuisson se fait chaud, de 130 180C, sous pression pendant 2 5 heures suivant l'essence du bois. Aprs ce traitement, les fibres obtenues sont en suspension dans un nouveau liquide contenant les produits chimiques et la lignine dissoute. Par un mcanisme de dfibrage, les fibres sortent individualises et souples. Il reste procder aux tapes de lavage, classage, puration et ventuellement blanchiment. Le procd alcalin Les caractristiques de la pte obtenue par un procd alcalin (cuisson courte de 2 h) sont une bonne rsistance mcanique, des bons indices d'clatement et de dchirure et une bonne longueur de rupture. Par contre, cette pte sera plus difficile blanchir qu'une pte issue d'un procd acide. Cette pte
4 En papeterie, l'opration de calandrage permet d'obtenir diffrents tats de surface de la feuille de papier, notamment pour les papiers couchs. Selon le degr de calandrage, le papier sera plus ou moins liss et brillant.

SIMONJOLIET 15\128

\2010

CENTRE TECHNIQUE DU PAPIER

sera utilise dans l'emballage, pour les papiers impression-criture lorsqu'elle est blanchie, ou encore en mlange. Le procd acide Le procd acide (cuisson longue de 5 h) confre au papier des caractristiques mcaniques plus faibles surtout en dchirure, mais la pte est plus claire, se raffine plus vite et se blanchit plus facilement sans chlore. Cependant, pour des raisons environnementales, elles ne sont presque plus utilises, sauf pour certains papiers trs raffins, ou encore pour les ouates de cellulose car elle apporte souplesse, douceur et possde des bonnes qualits d'absorption. \ I.2.2.3. La fabrication de la feuille

Afin d'optimiser les caractristiques de chacune des ptes pour obtenir des papiers usage trs spcifique, il est ncessaire de mlanger parfois jusqu' quatre ou cinq sortes de ptes. Diffrents stades sont ensuite ncessaires avant d'obtenir une feuille de papier : la pte est tout d'abord remise en suspension par une opration de dsintgration, puis cette prparation est gnralement raffine pour amliorer les liaisons entres les fibres. Cette opration consiste conduire la pte entre deux disques garnis de lames, ce qui provoque une hydratation et une fibrillation (la paroi externe des fibres est partiellement arrache ce qui augmente la surface externe de la fibre d'o plus de liaisons entre elles). Quelques lments fins dus un arrachage total de fragments de parois apparaissent; ils seront responsables d'un rallongement du temps d'gouttage de la feuille sur la toile (on cherchera donc limiter le nombre dlments fins lors dune dtection morphologique ; nous y reviendrons). Un papier dont la pte a t trs raffine est typiquement le papier calque (en effet, les traitements ont tendance diminuer les tailles des fibres). Cette premire opration apporte une amlioration de l'pair5, une stabilit dimensionnelle, de la rigidit, de la rsistance la traction ou l'clatement. La pte est dilue pour adapter sa concentration avant son arrive sur la machine, puis elle est pure (limination des impurets telles que bchettes, agglomrats de fibres ou de charges plastiques, etc.), puis dsare (l'air tant nuisible car provoque de la mousse et des trous). Des charges minrales sont ventuellement ajoutes (carbonate de calcium, kaolin6, talc, dioxyde de titane) et les adjuvants (agents de rtention, colorants, anti mousses, colles, azurants optiques). Reste former la feuille : sur une machine papier table plate, la pte est amene en un jet rparti sur toute la largeur d'une toile sans fin. L'avancement de la toile a tendance orienter globalement les fibres dans le mme sens. Ensuite la feuille est goutte dune certaine proportion de l'eau apporte par la prparation. Ces eaux sont appeles eaux blanches , elles contiennent des fibrilles et des charges, et elles sont rcupres plusieurs endroits, par exemple pour diluer la pte avant sa distribution sur la toile. La table peut tre remplace par un cylindre (former), pour la ralisation de papiers lourds par exemple. Ce type de formation sur une toile entraine une disymtrie dans l'paisseur de la feuille. Il est possible de distinguer sur une feuille de papier les deux faces, appeles respectivement ct toile et ct feutre, le ct toile tant celui qui a t au contact de cette dernire lors de la distribution de la pte. Cette disymtrie peut tre rduite si la formation de la feuille se fait entre deux toiles ou encore par des systmes hybrides de formation sur table plate trs courte puis entre deux toiles. La feuille entre ensuite dans la section des presses, pour liminer une autre partie de l'eau par pression. Cette opration a pour but de donner la feuille une certaine rsistance et de diminuer le
5 6

Lpair est l'aspect nuageux de la structure du papier observable par transparence. Le kaolin est un type d'argile compose principalement de kaolinite.

16\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\I

CENTRE TECHNIQUE DU PAPIER

maximum d'eau avant d'arriver en scherie. Aprs les actions mcaniques, il faut liminer le reste de l'eau par vaporation grce la chaleur et l'air. Plusieurs techniques peuvent alors tre utilises. Cette tape doit tre bien matrise car certaines caractristiques du papier en dpendent, par exemple la rigidit, la rsistance la traction, la dchirure ou l'clatement, ou encore la stabilit dimensionnelle. \ I.2.2.4. Les traitements ultrieurs

Une feuille en sortie de machine contient environ 50% d'air en volume et prsente une surface microporeuse de tailles variant globalement entre 30 et 100 m. Cet tat de surface et cette structure interne n'est pas synonyme de bonnes qualits d'impression. Aussi, une fois la feuille forme, elle va subir diffrents traitements sur et hors machine afin damliorer ses caractristiques ou son aspect. Ces diffrents traitements sont tous destins amliorer l'tat de surface d'un papier afin d'obtenir une bonne imprimabilit et un bon rendu des couleurs. Il s'agit de dposer en surface du papier ou du carton un enduit destin : - boucher la surface du papier qui est en sortie de machine trs rugueuse et macroporeuse - amliorer sa blancheur et son aspect (mat ou brillant aprs calandrage). Ces traitements pouvant apporter nouveau de l'eau la surface du papier, il faudra rajouter une nouvelle tape de schage. Le papier surfac La majorit des papiers Impression-Ecriture destins l'impression offset7 ainsi que quelques papiers d'emballage, dont les caractristiques de solidit et de rigidit doivent tres amliores sont enduits d'une sauce d'amidon. Celle-ci amliore la cohsion de surface indispensable lors de l'impression offset qui utilise des encres fort tirant. La permabilit du papier diminuent avec ce surfaage. Le papier pigment Le traitement est le mme que le prcdent, mais les sauces sont d'une part plus concentres et peuvent contenir en plus de l'amidon des pigments ou des liants. Le papier couch Un papier couch est un papier qui reoit une couche compose de pigments, liants et adjuvants.

\ FIGURE I.2.2-2 Surface dun papier couch

La photo ci-contre montre parfaitement sur une coupe d'un papier couch le bouchage des pores effectu par la couche. La couche est fine mais suffisante pour recouvrir les fibres. (INPG, 1999) ; (COPACEL, 2007) \ I.2.3. Un monde de fibres

Comme nous lavons annonc, le papier est compos de fibres de cellulose. Comme le projet porte sur la remodelage de linterface dun logiciel danalyse morphologique des fibres du papier, il est ncessaire dtudier de plus prs, avant daller plus loin, ces fameuses fibres. Les fibres sont les composants primaires de la feuille de papier. Pour un papetier, lutilisation de fibres dotes de
L'offset (de l'anglais to set off, reporter) est un procd d'impression qui est en fait une amlioration de son anctre, la lithographie, par le remplacement de la pierre lithographique par une plaque cintrable, adapte un cylindre, et l'ajout d'un blanchet entre le cylindre porte-plaque et le papier.
7

SIMONJOLIET 17\128

\2010

CENTRE TECHNIQUE DU PAPIER

caractristiques physiques prcises est la cl de la bonne qualit du produit final. Cest ici quintervient lappareil MorFi, mais nous y reviendrons. Il y a de cela quelques annes, le seul moyen de vrifier les longueurs et autres caractristiques physiques des fibres prsentes dans une pte papier tait le microscope et lil humain. Si lil humain reste le meilleur outil de dtection connu, il nen est pas moins quune telle analyse requiert normment de temps et dargent. Il nest pas envisageable dans un tel cas de figure deffectuer une analyse en ligne, ou un contrle systmatique des ptes. Revenons aux fibres. Une fibre possde un grand nombre de caractristiques utiles. \ I.2.3.1. Considrations physiques sur des fibres

Comme vu dans le chapitre prcdent (\ I.2.2 La fabrication du papier, page 14), la fibre est le principal constituant du bois. La cellulose constitue la matire organique la plus abondante sur la Terre (plus de 50 % de la biomasse). La quantit synthtise par les vgtaux est estime entre 50 et 100 milliards de tonnes par an. Le critre le plus dterminant attrait sa taille. Nous distinguerons les fibres longues des fibres courtes. Une fibre longue entrera dans la composition dun papier solide, trs rsistant et de bonne qualit. Une fibre courte permettra la fabrication de papiers lgers, fins et transparents, tels que les papiers calques, les journaux ou les annuaires tlphoniques. Note importante : les fibres longues sont plus chres car le processus dextraction des fibres a tendance les briser. Ainsi comme nous lavons vu dans le chapitre \ I.2 Le papier (page 13), plus les manipulations et les traitements seront nombreux sur une pte, plus les fibres seront courtes. Les papetiers utilisent gnralement un mlange fibre courtes/fibres longues dans la fabrication dun papier.

Deux autres critres peuvent aussi entrer en compte lors de la caractrisation dune fibre : - Sa courbure, les fibres courbes augmentent la rsistance du papier. - Son tat de surface, les lambeaux de paroi. Le rsultat du raffinage des fibres augmente les points dancrages avec les fibres voisines.

Une pte est un mlange de fibres entires, de fibres coupes, de bchettes et dautres constituants du bois notamment de vaisseaux dans le cas de bois de feuillus. Les proprits qui peuvent tre mesures sur les fibres informent sur les caractristiques des ptes. Une bchette est un lment se retrouvant essentiellement dans les ptes mcaniques. En effet, les procds de fabrication de ces ptes haut rendement peuvent gnrer des constituants de tailles ingales, ce qui est normal puisque les fibres ne sont pas dissoutes dans ce procd. Dans un papier issu dune pte mcanique comportant des bchettes, un tel lment se prsente sous la forme de tches bruntres, allonges, dune taille de 2 3 mm de longueur sur 0,5 1 mm de largueur). De tels lments doivent tre limits. Un lment fin est typiquement une fibre de trs petite taille. Ce type dlment apparait en nombre dautant plus important que le nombre de traitements appliqus une pte la t. La prsence dlments fins accrot considrablement le temps de schage dune pte. Il faut donc limiter ces lments. Un vaisseau est un lment de conduction naturel de larbre. Il a la forme dun tube creux paroi trs mince (1 3 m), ouvert ses deux extrmits. Dans le bois, ces tubes de longueur allant de 200 1300 m sont placs bout bouts dans le sens vertical. Un vaisseau est une caractristique dun bois de feuillus ; son diamtre varie au cours de lanne en fonction de la demande de sve. Naturellement, les vaisseaux sont plus importants pendant le printemps et lt. La forte capillarit de cet lment est bien videmment un atout pour la plante ; ce nest

18\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\I

CENTRE TECHNIQUE DU PAPIER

plus le cas pour un papier. En effet, une goutte dencre atteignant un vaisseau sera diffuse par le mme principe dans toute la longueur du vaisseau. Cest un problme qui peut tre corrig si la dtection des vaisseaux prsent dans une pte est effective. (Aitken, Cadel, & Voillot, 1988) Tous ces lments sont videmment discerns par le logiciel danalyses morphologique MorFi. Voir les considrations physiques de ces lments par le logiciel danalyses MorFi, en annexes \ VIII.1 Spcifications techniques du systme MorFi (page 93) Tout au long de la transformation du bois en feuille de papier, les fibres cellulosiques sont soumises des traitements physico-chimiques de grande intensit. Leur morphologie sen trouve invitablement modifie. Un des enjeux au fil de la fabrication de la pte et du papier est de limiter les effets nfastes des procds sur la morphologie au profit des effets positifs. \ I.2.3.2. Lanalyse morphologique des fibres

Lanalyse morphologique des fibres apparat ainsi dune utilit majeure. Diffrentes mthodes permettent de caractriser les lments qui constitueront le matelas fibreux du papier et ce quel que soit le procd de fabrication. Il existe deux grandes familles de ptes, les ptes chimiques et les ptes haut rendement. Si la production de pte chimique requiert des traitements chimiques et thermiques pousss afin de sparer les fibres par dgradation chimique du bois, celles haut rendement se basent sur des actions thermiques plus douces et mcaniques. Les consquences sur les fibres ne sont pas les mmes. Lors des cuissons chimiques, les fibres conservent leur intgrit, les traitements mcaniques intervenant par la suite aboutiront une sparation facile des fibres. A loppos, les ptes haut rendement prsenteront des fibres damines, coupes et fractionnes ; les fibres sont plus difficilement dissocies. Ainsi, les ptes nauront pas les mmes proprits morphologiques ni physiques selon le type de production utilis. La morphologie des fibres est loutil de caractrisation des ptes le plus rpandue au niveau des laboratoires danalyse. Lutilisation de cet outil va du suivi de la fabrication de la pte la dtermination de conformit lors dachat de fibres commerciales par les papetiers. Le dveloppement de nouvelles technologies, lamlioration de celles existantes et la vulgarisation des mesures sur les fibres vont dans le sens dune dmocratisation dappareils de mesures comme le MorFi. Garantir lvolutivit dun tel systme est donc un enjeu cl pour le Centre Technique du Papier, son dveloppeur, que nous prsentons au chapitre suivant (\ II.1.1 Le Centre Technique du Papier). (Nougier & Lecourt, 2005)

SIMONJOLIET 19\128

\2010

CENTRE TECHNIQUE DU PAPIER

\ II.

LE SITE DE GRENOBLE
\ II.1 LES ENTREPRISES
\ II.1.1. Le Centre Technique du Papier \ II.1.1.1. Prsentation

\ FIGURE II.1.1-1 Logotype du CTP Les objectifs sont multiples : -

Le CTP est un Centre Technique Industriel (CTI), cest-dire quil mane de la volont des diffrentes professions de lindustrie papetire de mettre en commun des moyens pour permettre aux entreprises de partager des quipements, des comptences et des informations qui, sans cela, leurs demeureraient inaccessibles. Le CTP a pour mission principale dapporter le support scientifique et technique lindustrie des ptes et papiers et industries associes, clients du CTP, dans le but daccrotre leur productivit et leur comptitivit, dans le respect de lenvironnement et des lois nationales ou europennes en vigueur.

Dvelopper le transfert des connaissances du CTP vers lIndustrie Papetire, Gnrer de la valeur pour la profession, Dvelopper la comptitivit et les innovations des quipes de recherche en lien direct avec les marchs industriels

Le CTP a trois mtiers: La Recherche & le Dveloppement Le Conseil & lExpertise Les Prestations & Analyses (labos) \ II.1.1.2. Situation gographique

\ FIGURE II.1.1-2 Localisation du CTP

20\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ II

CENTRE TECHNIQUE DU PAPIER

Le Centre Technique du Papier est situ sur le campus de Grenoble. Le fait que le centre soit situ Grenoble a t avant tout motiv par la forte implantation des industries papetires dans la rgion. La structure du secteur papetier en Rhne-Alpes est en effet celle d'une industrie lourde, tenue par de grands groupes, et de plus petites entreprises qui occupent des niches rentables. La production de papiers et cartons (plus de 4000 salaris) est localise massivement dans l'Isre, grce l'abondance des forts et cours d'eau. Les grands groupes papetiers dominent la rgion : Arjo Wiggins, International Paper, Smurfit, Cascades noter la prsence d'une entreprise rgionale, les Papeteries Emin Leydier. Le choix du site le domaine universitaire de Grenoble est justifi par le statut particulier dentreprise semi-publique et de centre de recherche. En effet, le centre accueille en permanence des thsards rmunrs, ceux-ci peuvent effectuer leurs recherches avec bien souvent une perspective demploi terme, dans le but dune mise en pratique de la thse, ou dune ventuelle application commerciale de celle-ci. (CTP, 2007) \ II.1.1.3. Historique

Le Centre Technique du Papier possde plus de 50 ans dune histoire assez singulire, dont voici les grandes lignes ainsi que les vnements notables influant directement sur le projet : 1957 : Fondation du CTP 101 entreprises papetires reprsentant 90% de la production franaise de ptes et papiers dcident de financer, par des contributions volontaires, un Centre sous forme dassociation technique (loi 1901). Le Centre Technique des Papiers, Cartons et Celluloses est n. Il a trois activits principales : - La recherche fondamentale, - La recherche applique, - Lassistance technique aux entreprises. 1962 : Transformation en un Centre Technique Industriel (loi 1948), financ par une taxe parafiscale. 1963 : Transfert dans de nouveaux locaux au cur du Domaine Universitaire de Grenoble. Lobjectif est den faire un centre de R&D autonome, proche des ples scientifiques : lcole de Papeterie (EFPG), le CNRS, lINPG, entre autres. 1996 : Dbut du dveloppement du logiciel danalyse morphologique des fibres, MorFi. 1998 : Lancement commercial du systme danalyse MorFi par le biais de la filiale TechPap. 2001 : Changement de financement: Contrats privs et dotation budgtaire fixe (cette dernire finance alors hauteur de 40% le budget). 2007 : Cinquantenaire du Centre Technique du Papier. A cette occasion, entre autre, une charte graphique est labore. Celle-ci servira de support au prsent travail.

SIMONJOLIET 21\128

\2010

CENTRE TECHNIQUE DU PAPIER

\ II.1.1.4.

Organisation du centre

Le Centre Technique du Papier regroupe, au 1er Janvier 2010, 142 employs, composs de 58 ingnieurs, dont 11 doctorants salaris, de 8 cadres support, de 54 techniciens de recherche et de 22 techniciens de support. Lagencement de ces services est indiqu ci-dessous :

\ FIGURE II.1.1-3 Organisation du CTP Units Scientifiques et technologiques Service daccueil Services Supports (CTP, 2009) Le stage aura t effectu au sein du service Capteurs Modlisation & Traitement de donnes. Voir la prsentation du service daccueil, chapitre \ II.1.1.7 Le service daccueil (page 24).

22\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ II

CENTRE TECHNIQUE DU PAPIER

\ II.1.1.5.

Aspects juridiques

Le Centre Technique du Papier est un centre technique industriel. Un centre technique industriel (CTI) est une structure de recherche technologique qui intervient en support d'une filire industrielle gnralement caractrise par une forte part de PME8. Les centres techniques industriels exercent une mission d'intrt gnral dans les domaines de la veille technologique, de la recherche et dveloppement et de la normalisation. Ils dveloppent galement des activits prives et commerciales dans l'assistance technique, le transfert de technologie, la formation et plus rcemment le dveloppement durable. Ce sont des agents conomiques de la recherche et dveloppement au service des entreprises et dont la gouvernance est assure par des reprsentants d'entreprises, sous le contrle de l'Etat (ministre charg de l'industrie). Les centres techniques industriels peuvent intervenir dans un cadre rgional conjointement avec d'autres organismes en qualit de centre de ressource technologique. Un statut juridique leur est ddi : celui de Centre Technique Industriel selon la loi du 22 juillet 1948, insre en 2004 dans le code de la recherche. Une grande partie des CTI s'est regroupe au sein de l'association Rseau CTI ; voir la partie consacr ce rseau, chapitre \ II.1.7 Le rseau CTI (page 27). \ II.1.1.6. Aspects conomiques

Comme indiqu dans le chapitre prcdent (\ II.1.1.5 Aspects juridiques), le Centre Technique du Papier est un tablissement semi-public. De ce fait, une grande partie du Chiffre dAffaire est dotation dtat. Mais cette part diminue, du fait du dsengagement financier progressif de lEtat sur les centres de recherche. La seconde source de revenu du centre est donc bien videment les contrats privs, dpendant aussi du Programme Gnral de Recherches (PGR) fix par le CTP.

4%

28%

Chiffre d'Affaires Exercice 2009


40% PGR-Dotation PGR-Contrats Associs Conseil Expertise Prestation

28%

Pararecherche Dotation

Pour lexercice 2009, le Chiffre dAffaires tait de 11 Millions deuro, dont 7,3M uniquement en prises de commandes pluriannuelles. Partant du contexte conomique morose que fut 2009, cest un trs bon chiffre, que le CTP a pu obtenir dune part en se diversifiant et en se recentrant sur ses clients, mais aussi en entreprenant, depuis 2008, une srie de mesures de conservations dnergie au sein de ses locaux. Tous ces efforts ont finalement ports leurs fruits ; lentreprise reste rentable. (CTP, 2009)

Petites et moyennes entreprises

SIMONJOLIET 23\128

\2010

CENTRE TECHNIQUE DU PAPIER

Pour continuer sur cette voie, le Centre Technique du Papier sest fix 6 objectifs pour lavenir afin de garantir sa rentabilit : 1. Porter leffort de recherche centr sur les innovations de diffrenciation et de rupture de 50 % du programme gnral de recherche en 2008 70 % en 2011. 2. Centrer les projets de diffrenciation et de rupture sur trois domaines dinnovations stratgiques : - Prenniser laccs aux matires premires naturelles et du recyclage, - Dvelopper des co-concepts de production, de la bio-raffinerie loptimisation des procds de recyclage/dsencrage, - Fonctionnaliser la fibre pour de nouveaux usages des matriaux ligno-cellulosiques, de l'intgration des nanotechnologies aux papiers et emballages communicants. 3. Renforcer la cration de la valeur dans les entreprises par un transfert technologique performant des rsultats de la recherche. 4. Soutenir les PME du secteur de la transformation et de limprimerie. 5. Conforter lattractivit internationale du ple de recherche grenoblois sur les ligno-celluloses. 6. Dvelopper une politique de ressources humaines au service dquipes motives et performantes en appui linnovation et aux entreprises. \ II.1.1.7. Le service daccueil

Le stage sera ralis au sein de lunit scientifique et technique (UST) Capteurs Modlisation & Traitement de donnes (aussi appele en interne UST10). Ce service a en charge la conception et le dveloppement dappareils de mesures, tous les niveaux de la production papetire, ainsi que lanalyse et loptimisation des procds par le biais de techniques de traitement de donnes, de modlisation et de simulation. LUST10 dveloppe et met disposition des chercheurs et des industriels des moyens danalyse, bass sur des systmes de capteurs et de logiciels de traitement. Les vocations de ces outils sont lamlioration : des procds de fabrication de la qualit des produits de la matrise des cots

Voici lorganigramme de ce service :

24\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ II

CENTRE TECHNIQUE DU PAPIER

\ FIGURE II.1.1-4 Organigramme du service daccueil

Le volet commercialisation du catalogue dvelopp par cette UST est le rle de la filiale TechPap, dont la description est le thme du chapitre suivant. \ II.1.2. La filiale TechPap

La filiale TechPap est une socit commerciale cre par le CTP en 1990 pour dvelopper la vente des produits mis au point par ses partenaires. Elle est prsente dans le monde entier grce son rseau dagents et a ouvert une filiale Atlanta aux tats-Unis. Lactivit de la filiale a depuis t revendue (2009) la socit amricaine Technidyne. Celle-ci est ds lors distributeur \ FIGURE II.1.2.-1 TechPap officiel dans le pays. Cest une entreprise un peu Logotype de TechPap particulire. En effet, cette socit par action simplifie (SAS) appartient majoritairement au centre de recherche et est dailleurs situe dans ses mmes locaux. Mais contrairement celui-ci, elle est but lucratif : TechPap a entre autre charge la commercialisation de certains outils tels que le MorFi dvelopps initialement par le CTP. Une note importante : Monsieur Guy Eymin Petot Tourollet est aussi le responsable de lunit Capteurs Modlisation & Traitement de donnes, tait galement salari de TechPap (jusquau 1er septembre 2010). Ainsi les deux entreprises sont clairement lies par des intrts mutuels, puisque les solutions dveloppes au sein du CTP et plus particulirement au sein de lUST10, sont commercialises par TechPap. Dans le cadre du projet dont nous parlerons plus tard, concernant la solution MorFi, TechPap constitue un intervenant extrieur en tant que vendeur de la solution et donc au plus proche des retours clients. (CTP, 2007) Le chiffre daffaire de TechPap au cours de lexercice 2009 est de 1 340k.

SIMONJOLIET 25\128

\2010

CENTRE TECHNIQUE DU PAPIER

Voici lorganigramme de la socit :

\ FIGURE II.1.2-2 Organigramme de la filiale TechPap

\ II.1.3.

Le partenaire FCBA

Le FCBA est linstitut technologique Fort, Cellulose, Bois-construction, Ameublement, n de la fusion, en 2007, du CTBA, Centre Technique du Bois et de lAmeublement, et de lAFOCEL, Association Fort Cellulose. Cette fusion permet aux secteurs fort, pte, bois et ameublement de disposer d'un outil positionn sur l'amlioration des synergies entre les diffrents maillons de la filire. L'un des objectifs de l'Institut est de se doter d'une organisation axe vers plus d'innovation, plus de synergie et offrant de meilleurs services, afin de relever les dfis des entreprises de la filire. Note : le regroupement InTechFibres, dont nous allons parler, est le rsultat du rapprochement du CTP et du FCBA. Le chiffre daffaire du FCBA au cours de lexercice 2009 est de 30 254 k. \ II.1.4. Le regroupement InTechFibres

\ FIGURE II.1.3-1 Logotype du FCBA

Lobjectif du regroupement InTechFibres est daider les industriels mieux exploiter la diversit des ressources lignocellulosiques dans leurs procds et anticiper les technologies d'avenir. Rsolument tourn vers le futur, les quipes Ptes Vierges du CTP, du laboratoire Bois-Process de l'AFOCEL et Pagora, \ FIGURE II.1.4-1 proposent en France comme l'international, une expertise en matire de fibres et de pte papier, intgrant les aspects Logotype dInTechFibres environnementaux et la dimension du produit final peru par l'utilisateur. InTechFibres partage les locaux du CTP. Notons de plus que le systme MorFi est utilis pour les recherches dInTechFibres ; il sera donc envisag de prendre connaissance de lutilisation quils font du systme dans le but de mieux rpondre aux attentes des clients dont ils sont partie. Nous souhaitons introduire, ce propos, deux intervenants au projet : Messieurs Michel Petit-Conil, manager de lunit scientifique et technique InTechFibres et Franois Cottin, technicien papetier utilisant rgulirement MorFi.

26\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ II

CENTRE TECHNIQUE DU PAPIER

\ II.1.5.

La plate-forme technologique TekLiCell

La plateforme technologique TekLiCell rsulte de lunion des ressources du groupe Grenoble INP, du Centre Technique du Papier et de Grenoble INP Pagora, visant lui confrer une place internationale prpondrante dans la recherche, la formation et linnovation pour les secteurs de la papeterie, de limprimerie et de lemballagetransformation.

\ FIGURE II.1.5-1 Logotype de TekLiCell

\ II.1.6.

Lcole Pagora

Grenoble INP-Pagora, lcole internationale du papier, de la communication imprime et des biomatriaux, une cole du groupe GrenobleINP, est le plus grand centre europen de formation des ingnieurs pour ces filires. Pagora forme les futurs cadres des secteurs lis au papier, limpression, lemballage et lenvironnement. L'cole propose galement une licence professionnelle sur la gestion des flux numriques. Lcole propose aussi une formation internationale en collaboration avec des universits europennes. \ FIGURE II.1.6-1 Logotype de lINP Pagora Quelques chiffres : Diplmes dingnieurs dlivrs : 60 par an Personnel : 76 dont 30 Enseignants/Chercheurs et 35 doctorants Budget consolid : 7,0 M Le rseau CTI

\ II.1.7.

Le Rseau CTI est un groupement de 16 18 Centres Techniques Industriels, qui a pour but de perfectionner les services quils proposent aux entreprises en cooprant sur des thmes et des technologies porteuses et transversales (cuir, bois, mcanique, ptrole, papier, etc.). Le rseau CTI a trois objectifs cls : Dynamiser les comptences Valoriser les ressources Agir collectivement. \ FIGURE II.1.7-1 Logotype du CTI

Les Centres Techniques Industriels constituent, pour le tissu industriel franais, un dispositif majeur de transfert technologique et dinnovation. Aprs prs de 50 ans dexprience dans son domaine, le CTP a accompagn les mutations de lindustrie papetire et il est aujourdhui au cur de ses besoins, ses enjeux et ses perspectives. Le CTP est donc prsent au salon Pollutec, au ct de cinq autres Centres Techniques Industriels, sur un stand commun Rseau CTI. De par sa connaissance majeure des problmatiques des grands sites industriels, le CTP joue un rle cl au sein du Rseau: commission Environnement-nergie, dossiers de presse, communication sur des thmes porteurs, mise en place dune charte informatique, dossiers Europens, etc.

SIMONJOLIET 27\128

\2010

CENTRE TECHNIQUE DU PAPIER

\ III. LE PROJET
Le projet consiste en la recompilation sous environnement rcent et dans le remodelage de linterface du logiciel danalyse MorFi, pour Morphologie des Fibres. Puis en la dfinition, partir du rsultat obtenu, dune charte graphique concernant llaboration des futurs produits logiciels du CTP. Ce projet est motiv par un grand nombre dintervenants, savoir le Centre Technique du Papier et plus prcisment lUST10, qui a en charge llaboration des systmes de tests, matriels et logiciels. La filiale TechPap qui aura en charge la commercialisation de la nouvelle version. Et enfin les clients dj quips danciennes versions de MorFi, soit InTechFibres au sein du CTP dans notre cas.

\ III.1 LE SYSTEME DANALYSES MORFI


Le systme MorFi est le fer de lance des systmes danalyse du CTP, et de fait un lment cl au catalogue de TechPap. Ce systme possde des qualits danalyses exemplaires. MorFi est techniquement loutil danalyse morphologique des fibres le plus performant par rapport son principal concurrent, kajaaniFiberLab, propos par la socit finlandaise Metso Automation. De nombreux autres constructeurs ont dvelopp par la suite des appareils danalyse de la morphologie des fibres ; voici le paysage actuel concernant ces outils : Dnomination MorFi Fiber Quality Analyzer Optest HiRes Fiber Quality Analyzer Kajaani FSA FiberLab Pulp expert L&W FiberMaster STFI Distributeur TechPap Equipment Corp. Optest Equipment Corp. Metso Automation Metso Automation Metso Automation Lorentzen & Wettre

Actuellement, le systme danalyse MorFi est prsent dans 23 pays. Les marchs principaux sont par ordre dimportance : la France (21 units), la Chine (11 units), les tats-Unis (10 units), lAfrique du Sud (6 units), puis lAllemagne et le Japon (4 units chacun). Il existe actuellement 79 units de par le monde. Voir annexe \ VIII.2 Rpartition gographique des systmes MorFi existants (page 94).

\ FIGURE III.1-1 Rpartition gographique du systme danalyse MorFi :1 : 2-5 : 6-20 : 20 et +

28\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ III

CENTRE TECHNIQUE DU PAPIER

Le logiciel accuse cependant une certaine vtust, du moins concernant son interface. Son dveloppement a en effet dbut en 1996 sous Microsoft Visual C++ 5.0 lpoque, puis sous Microsoft Visual C++ 6.0, g aujourdhui, en 2010, de plus de 12 ans. Il est important de noter que le support de cette version nest plus assur par Microsoft. Le systme MorFi ne se limite pas au logiciel. Cest en effet un appareil de mesure, un matriel et un logiciel. Lorsque nous parlerons de MorFi dans notre cas, il sagira toujours du logiciel ; cest en effet sur cette partie que porte le projet. Il est primordial avant tout de considrer lappareil dans son ensemble. Dans sa version actuelle (v7.13.00), le systme MorFi est capable danalyser : La longueur des fibres (arithmtique, Pondr en Longueur et en surface) La largeur des fibres Les coudes des fibres (Kink) Les courbures des fibres (Curl) La masse linique (Coarseness) Le nombre de fibres par grammes La longueur moyenne des bchettes (si mode bchette activ) La largeur des bchettes (si mode bchette activ) La surface des bchettes (si mode bchette activ) Le pourcentage des Bchettes par rapport aux fibres (si mode bchette activ) Le pourcentage en surface des Elments fins Le pourcentage en longueur des Elments fins

Voir lannexe \ VIII.1 Spcifications techniques du systme MorFi (page 93) pour de plus amples informations. (Eymin Petot Tourtollet, Cottin, Cochaux, & Petit-Conil, 2003) \ III.1.1. Le fonctionnement de MorFi

Aprs introduction dun extrait de pte papier de masse connue, celle-ci est dilue pour constituer une suspension de fibres qui est mise en circulation pour homognisation. La cellule de mesure est constitue dune veine transparente de gomtrie conue afin de permettre lcoulement de la suspension fibreuse et la prise dimages par une camra haute rsolution. Les images acquises sont analyses par le logiciel (sur lequel porte notre projet) de traitement dimages bas sur des algorithmes de reconnaissance visuelle. Les lments dtects sur limage sont compts en fonction de leur catgorie (bchettes, lments fins dont la longueur est infrieure 200 m, fibres). Leurs caractristiques morphologiques sont consignes : MorFi analyse plus de 400 valeurs par mesure. Les possibilits offertes par lanalyse de ces valeurs est si importante que le CTP dveloppe et propose un vritable cosystme de logiciels permettant dexploiter des donnes fournies par MorFi. Notons par exemple la solution logicielle StatMorF, qui permet deffectuer une ACP9 sur diffrentes mesures ; SynchroWin, qui permet dexporter des valeurs vers une base de donnes. Celle-ci peut tre exploite par dautres logiciels, tels que XTrend, QuaLine ou encore PulpMix. Tous ces logiciels, dvelopps par lUST10, peuvent tre proposs un client en plus du systme MorFi.

9 L'Analyse en Composantes Principales (ACP) est une mthode qui consiste transformer des variables corrles entre elles en nouvelles variables indpendantes les unes des autres.

SIMONJOLIET 29\128

\2010

CENTRE TECHNIQUE DU PAPIER

\ III.1.2.

Partie logicielle

La partie logicielle repose sur un programme dvelopp depuis 1996 en C++ sous linterface de dveloppement intgr Microsoft Visual Studio. Le logiciel permet lacquisition des trames vido fournies par les camras (initialement analogiques, il sagit prsent de camra IP), ainsi que le \ FIGURE III.1.2-1 contrle du matriel (les diffrentes pompes, lectrovannes, les capteurs et Icne de MorFi v7.13 autre systmes danalyses). Lorsquune mesure est lance, MorFi commande la partie mcanique. Un chantillon de pte dilu dans de leau est vers dans le cuvier de linstrument. Cette opration peut tre effectue soit par un oprateur soit par un prleveur (en mode en ligne ). Dans ce cuvier, ces fibres sont une nouvelle fois dilues et agites en permanence afin dviter que la solution ne se dcante naturellement. Une pompe permet damener les fibres dilues dans une veine ; la solution sera place sur une lamelle de verre puis limage en sera capture par une camra quipe dune optique de type microscopique. Le rle du logiciel consiste ds lors traiter limage afin den extraire le nombre de fibres, leurs caractristiques (longueur, largueur, courbures et autres lment cits dans le chapitre prcdent, \ III.1 Le systme danalyses MorFi, page 28). Une partie du fonctionnement du logiciel (notamment les calculs et certaines options spcifiques) se base sur la librairie dynamique CTP.dll ; les traitements dimages utilisent la librairie OpenCV10. Voici le gabarit type impos par lalgorithme de reconnaissance des lments en fonctionnement standard : Les fibres : le logiciel distingue les fibres partir de critres sur la taille (longueur, largeur). A la livraison, le logiciel est paramtr de la faon suivante :
200 5 10 75

Les bchettes : le logiciel considre par dfaut que les bchettes sont des objets dont la largeur est suprieure la largeur maximum des fibres, soit 75 m. Les bornes de longueur sont quant elles identiques celles des fibres. Les lments fins : un lment fin est tout objet qui est prsent dans la pte, mais dont les dimensions sont infrieures celles des fibres. A savoir, une longueur infrieure 200 m par dfaut et ou une largeur infrieure 5m par dfaut. \ III.1.3. Considrations structurelles des sources

MorFi est un logiciel relativement puissant, dot de nombreuses fonctionnalits. En effet lquipe de dveloppement fait le choix de maintenir la compatibilit descendante de son logiciel. Cela lui permet de garantir un fonctionnement sur des matriels vieux de 14 ans pour certains. Dans le monde de linformatique, cest un petit exploit Qui se paye en lisibilit du code ! Certaines fonctions nont pas t rcrites depuis 1996. Cest le cas notamment dun grand nombre de fonctions graphiques et de gestion dinterface. Certaines fonctions ont pu, par contre, tre modifies de nombreuses fois au cours de la vie du logiciel. Cela ne facilite pas la comprhension du code. Dautant plus que les intervenants, dveloppeurs et stagiaires, auront t trs nombreux sur un projet dune telle envergure.

10 OpenCV (pour Open Computer Vision) est une bibliothque graphique libre, initialement dveloppe par Intel, spcialise dans le traitement d'images en temps rel.

30\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ III

CENTRE TECHNIQUE DU PAPIER

Un utilisateur au fait de linformatique moderne sera alors surpris par linterface vtuste, bien que fonctionnelle, de ce logiciel. Et pour cause : le style na pas t modifi depuis le dbut du dveloppement du logiciel ! Dcrivons prsent les diffrents fichiers source dfinissant le projet (note : les fichiers spcifiques lIDE11 ne sont bien videment pas pris en compte): Nombre 81 89 33 46 12 12 12 2 Type Fichiers de source C Fichiers dentte C Fichiers de configuration Fichiers Image Fichiers Icones Fichiers de librairie dynamique Fichiers de librairie statique Fichiers Ressource (un par langue) Extension *.c *.h *.ini et *.cfg *.bmp *.ico *.dll *.lib *.rc Dossier Specif Includes Config ResCommunes/BitMap ResCommunes/IconesObj DLL_old _Used_by_PB Ressource_FR Ressource_GB

Soit un total de 287 fichiers indispensables la compilation du projet pour linstant. Pour information, le dossier contenant le projet pse lui seul 335Mo, avant modification du code. Tchons de dfinir parmi ces fichiers, ceux dont la modification est partie prenante du projet : - Create.c But : Cration des fentres. Modification prvues : changement de certains lments lors de la cration des fentres. - Entete.c But : affichage du splash screen de MorFi. Modifications prvues : changement du visuel de dmarrage. - Graphic.c But : Gestion des fentres graphiques Modification prvues : restructuration du comportement des graphiques en gnral. - GraphicWnd.c But: Dfinition de la fentre principale Modifications prvues : modifier les positions et les comportements des sous-fentres. - Synthese.c But : Affichage des graphiques de synthse Modifications prvues : remplacer les graphiques de synthse actuels par des lments graphiques plus modernes. - Tableau.c But : Affichage des rsultats sous forme de tableaux Modifications prvues : Redfinition de laspect visuel des tableaux afin de les rendre plus modernes. - Histogramme.c But : Gestion de l'affichage des histogrammes Modifications prvues : Remplacement des histogrammes actuels par des lments graphiques plus modernes. - PrincWnd.c But : Dfinition de la fentre principale Modifications prvues : Redfinition des lments de la barre doutils. - Specif.c

11 Integrated Development Environment : programme regroupant un ensemble d'outils pour le dveloppement de logiciels.

SIMONJOLIET 31\128

\2010

CENTRE TECHNIQUE DU PAPIER

But: Routines d'initialisation et de restauration du logiciel Modifications prvues : Modifications de certaines variable globales lors de linitialisation. - MorFi.c But : Fonction principale du projet Modifications prvues : Dclaration de nouveaux lments lors de linitialisation du logiciel - MorFi.rc But : Dfinit les ressources du logiciel Modifications prvues : Restructuration des formulaires et ajouts dlments graphiques. Suppression des ressources localises de type chane de caractres. Nous le verrons par la suite, mener bien ce projet signifie modifier une quantit bien plus importante de fichiers. Les fichiers principaux, ceux indiqus ci-dessus, ncessiteront le plus de modifications. Ils reprsenteront la plus grande quantit de travail. Nous serons contraints, au cours de la ralisation de ce projet, de faire voluer toutes les sources.

32\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ III

CENTRE TECHNIQUE DU PAPIER

\ III.2 PORTAGE
\ III.2.1. Compilation sous Microsoft Visual C++ 6.0 Une premire compilation sous Microsoft Visual C++ 6.0 permet de dfinir les besoins en termes de librairies et de dpendances. Le logiciel tant historiquement dvelopp sous cet IDE, la compilation doit pouvoir seffectuer sans problmes. Cette tape met en lumire les diffrents requis inhrent cette compilation, savoir les diffrents fichiers DLL12 lis lapplication, au nombre de 11. Par dfaut, ces fichiers DLL sont stocks dans le dossier ./_DLL_old

\ FIGURE III.2.1-1 Logotype de Microsoft Visual Studio 6.0

Nom du fichier DLL cv097.dll cxcore097.dll iidcapi_SONY.dll mil.dll mil1394.dll milcor.dll milmet2.dll milvga.dll milvhook.dll PCI-Dask.dll PVAPI.DLL

Rle du fichier Librairie de fonctions OpenCV Librairie de fonctions OpenCV Driver des cameras Sony Bibliothque dimage Matrox Image Library Bibliothque dimage Matrox Image Library Bibliothque dimage Matrox Image Library Bibliothque dimage Matrox Image Library Bibliothque dimage Matrox Image Library Bibliothque dimage Matrox Image Library Driver de la carte Dask (PCI) Gestion de la camera IP Prosilica

Tous ces fichiers doivent tre placs dans le dossier C:\Windows\system32\ de la machine sur laquelle le logiciel MorFi sera excut. Le second prrequis est la cl de protection du logiciel. Celle-ci permet de protger le logiciel contre la copie ; bien quil soit li la machine danalyse, il est en effet ais de reproduire le schma dinstallation afin deffectuer des mesures sur un autre poste. Pour sen prmunir, le logiciel MorFi ne fonctionne que sil est lanc avec une cl en argument. Cette cl est matrielle sur un systme client : cest dans ce cas une simple cl USB ou la cl du produit est stocke dans une EEPROM13. Pour le dveloppeur, cest un argument ajouter lors de lexcution du programme. Dans toutes les versions de Microsoft Visual C++, il est possible dexcuter un fichier compil avec un ou plusieurs arguments.

Dynamic Link Library, en franais Bibliothque de liens dynamiques (Windows). Une DLL contient des ressources utilisables par une ou plusieures applications. 13 EEPROM : Electrically-Erasable Programmable Read-Only Memory, ou mmoire morte effaable lectriquement et programmable.

12

SIMONJOLIET 33\128

\2010

CENTRE TECHNIQUE DU PAPIER

\ III.2.2.

Recompilation sous Microsoft Visual C++ 2010 \ III.2.2.1. Conversion des dsw en vcxproj

\ FIGURE III.2.2-1 Logotype de Microsoft Visual Studio 2010

Afin de pouvoir exploiter le projet, il est ncessaire douvrir lancien fichier projet ralis laide de la suite Microsoft Visual Studio 6.0, cette fois avec la version 2010. Les deux suites nutilisent pas les mmes types de fichiers de projets ; nous sommes face des types dsw (VC++ 6 Workspace) qui doivent tre convertis en vcxproj (VC++ Project). Cette importation passe au crible toutes les dpendances lies au projet, en effectuant les modifications appropries. Le tout gnre un fichier de journalisation indiquant le succs ou non de limportation, voir les ventuels avertissements. La conversion dun projet peut-tre une tape longue ; elle est par ailleurs tout aussi critique quindispensable. Aucun problme dans notre cas. Les deux projets, la DLL et le programme principal simportent sans le moindre problme dans la suite de Microsoft. Note importante : un projet ouvert sous la version 2010 devient logiquement inexploitable sous les versions antrieures. \ III.2.2.2. Recompilation du fichier DLL

La premire tape consiste en la recompilation du fichier DLL associ au programme, savoir CTP.dll. Il est en effet ncessaire de compiler ce fichier avant le programme, puisque ce dernier aura justement besoin de CTP.dll pour tre son tour excut. Les sources de cette DLL sont composes de 142 fichiers pour un poids total de 22,2Mo. La compilation sest passe sans problme sous Microsoft Visual C++ 6.0. Il faut prsent raliser la mme tche sous la version 2010. Cette premire compilation est un succs ; le fichier DLL est gnr, non sans grand nombre davertissements. Nous reviendrons sur ce point ultrieurement. Pourtant si la version release14 fonctionne sans problme, il nen est pas de mme pour la version debug15. En effet lors dune analyse dimage avec cette nouvelle DLL, MorFi affiche un message derreur. Aprs une analyse approfondie du code, il apparat en effet que deux variables ne sont pas initialises correctement dans le fichier source analyse.c :
Ligne 2069 : Corrig par : Ligne 3786 : Corrig par : BOOL TraitAdjacent; BOOL TraitAdjacent=TRUE; double courbure,curlPlus=0,curlMoins=0; double courbure=0,curlPlus=0,curlMoins=0;

Telles quelles taient entres, ces deux variables ne gnaient pas lexcution du programme lorsquil tait compil dans la version 6.0, puisque le compilateur attribuait une valeur par dfaut une variable non-initialise par le dveloppeur. Ce nest plus le cas dans la version 2010, il est donc ncessaire dinitialiser toutes les variables. Lorsque ces corrections sont effectues, le fichier DLL est oprationnel. Il est donc possible de tester lexcution du programme et de comparer le rsultat dune mme analyse sur lancienne et la nouvelle version. Aprs trois images de test analyses retournant un rsultat identique, le fichier DLL est jug pleinement oprationnel. Il est donc possible de

14 15

Release, ou version admissible, correspond la version finale de celui-ci, mais non distribue. Debug, ou version de dveloppement (dbogage)

34\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ III

CENTRE TECHNIQUE DU PAPIER

passer la compilation du logiciel. \ III.2.2.3. Recompilation du programme principal

Une fois le fichier DLL cr, ltape suivante est celle de la compilation du programme principal, MorFi.exe. Pour cela, et comme pour le fichier DLL, nous ouvrons le fichier de projet .dsw dans la suite Microsoft Visual C++ 2010. Cette opration passe, larborescence du projet apparat. La compilation directe est un chec. En effet les options de compilation du logiciel sont telles que certains avertissements sont vus comme des erreurs (ce qui est malgr tout une bonne chose). Nous sommes face trois types davertissements : Avertissement C4996 Lavertissement le plus courant avec pas moins de 2000 occurrences lors de la compilation. Il est du deux causes principales dont nous reparlerons. Retenons quil est le rsultat dun formalisme progressif du langage C++ tel quutilis dans la suite de Microsoft, motiv par lutilisation de fonctions dites scurises ou standardises. En ce qui concerne les fonctions scurises CRT16, celle-ci tentent de limiter les possibilits dover flow17 notamment lors de la manipulation de chanes de caractres. Dans le cas des fonctions normalises, Microsoft recommande de prendre en compte le standard POSIX18 ISO19 C++, ce qui ntait pas toujours le cas auparavant. Exemple de ligne posant problme:
sprintf(str,"%s %.0f ",str1, dVal_L);

Extrait de distrib.c Dans le cas de la compilation dune telle ligne, la sortie du compilateur rsultante est la suivante :
1>c:\morfi\specif\distrib.c(131): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> c:\program files\microsoft visual studio 10.0\vc\include\stdio.h(371) : voir la dclaration de 'sprintf'

Avertissement C4554 Cet avertissement na que quatre occurrences. Il est li labsence de parenthse dans une fonction si (if), qui est dtect par le compilateur comme une faute de dveloppement, au vu des priorits doprande. Il nen est rien, bien entendu, mais il convient deffectuer cette modification afin de garantir la compilation du programme et surtout dapporter une meilleure longvit au code source. Exemple de ligne posant problme (extrait de rw_mpp.c) :
if(ucCtrlAFaire_L & _k_CTR_CYCLE != 0)

Dans le cas de la compilation dune telle ligne, la sortie du compilateur rsultante est la suivante :
1>c:\morfi\specif\rw_mmp.c(913): warning C4554: '&' : vrifiez la priorit des oprateurs comme cause possible d'erreur ; utilisez des parenthses pour rendre plus claires les priorits

Correction propose :

C Run-Time signale la capacit d'un langage de programmation (en loccurrence, le langage C) dterminer le type d'une variable pendant l'excution d'un programme. 17 LOverflow (en franais, dpassement de tampon) est un bug caus par un processus qui, lors de l'criture dans un tampon, crit l'extrieur de l'espace allou, crasant ainsi dautres informations. 18 POSIX est le nom d'une famille de standards dfinie depuis 1988 par l'IEEE et formellement dsigne IEEE 1003. Ces standards ont merg d'un projet de standardisation des API des logiciels destins fonctionner sur des variantes du systme d'exploitation UNIX. 19 Le C ISO (anciennement C ANSI) est la norme de standardisation des fonctions en langage C.

16

SIMONJOLIET 35\128

\2010

CENTRE TECHNIQUE DU PAPIER

if((ucCtrlAFaire_L & _k_CTR_CYCLE) != 0)

Lajout des parenthses est demand par le compilateur. Cela ne posait pas de problme sous les versions antrieures, il semble que ce nest plus le cas actuellement puisque les priorits mal dfinies peuvent tre mal interprtes par le dveloppeur et indubitablement par le compilateur. Erreur C2220 Cette erreur a la particularit dtre gnre automatiquement lors de la compilation avec loption \WX. Dans ce cas, chaque fichier gnrant un avertissement dclenchera de plus une erreur C2220. Cette erreur disparat donc, si les avertissements sont corrigs par le dveloppeur. Vue du journal de compilation dans le cas de distrib.c :
1>c:\morfi\specif\distrib.c(131): error C2220: avertissement considr comme une erreur aucun fichier 'object' gnr

En effet beaucoup de fonctions sont dsormais scurises. Par exemple depuis la version 2005 de Microsoft Visual C++, la fonction strcpy gnre un avertissement et le dveloppeur est invit utiliser la fonction scurise nommes strcpy_s ; dans ce cas, il faudra passer en argument la taille de la chane de caractre copier dans le buffer. Voici un extrait montrant cet exemple sur le site MSDNA : For example, the strcpy function has no way of telling if the string that it's copying is too big for its destination buffer. However, its secure counterpart, strcpy_s, takes the size of the buffer as a parameter, so it can determine if a buffer overrun will occur. If you use strcpy_s to copy eleven characters into a tencharacter buffer, that is an error on your part; strcpy_s cannot correct your mistake, but it can detect your error and inform you by invoking the invalid parameter handler. (Microsoft, 2010) Pour dautres fonctions, il peut arriver que la logique dutilisation soit diffrente, comme par exemple la fonction fopen et sa version scurise fopen_s. Auparavant la fonction fopen retournait directement un pointeur de fichier de type FILE. Dans la nouvelle version fopen_s, le pointeur de fichier doit tre pass en paramtres, la fonction retournant alors une entre dans la variable globale de gestion des erreurs, errno_t. \ III.2.2.4. Modifications syntaxiques lies

Afin dtre conforme aux exigences de Microsoft en matire de scurisation, il a t dcid de quantifier la charge de travail que reprsenterait de telles modifications. En effet plus dune vingtaine de fonctions courantes sont touches par cette dprciation. Cest un problme qui peut, comme indiqu prcdemment, tre ignor ou corrig. Le corriger signifie, modifier une grande partie du code, induisant un cot horaire important. Une tude a t ralise afin de dfinir le cot horaire et pcuniaire de cette restructuration du code. Celle-ci est jointe en annexe \ VIII.3 Procdure de mise aux normes CRT du programme (page 96). Afin de mener bien cette tude, elle sera ralise sur lun des nombreux fichiers source du programme (distrib.c). \ III.2.2.5. Les dprciations dues aux Secure C-Run Time

Dans ce premier cas, ltude de faisabilit dune restructuration complte montre la difficult technique que reprsente la modification de tout le programme. Il sera donc choisi de dsactiver les erreurs lies la dprciation Secure C-Run Time (par le biais de la dfinition de _CRT_SECURE_NO_WARNINGS en directive prprocesseur dans les fichiers posant problme), tout

36\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ III

CENTRE TECHNIQUE DU PAPIER

en gardant le mme niveau dexigences la compilation, savoir, un niveau davertissement 3 (/W3) et les avertissements grs comme des erreurs (/WX). \ III.2.2.6. Les dprciations dues la norme POSIX

Dans le cas du respect des normes POSIX ISO C++, les erreurs sont dune part moins nombreuses et dautre part lies moins de fonctions : seulement 7 en effet. De plus il est relativement vident de mettre niveau ces fonctions pour respecter la norme. Ancienne fonction getcwd() strupr() strimp() strlw() itoa() ultoa() lseek() Nouvelle fonction _getcwd() _strupr() _strimp() _strlw() _itoa() _ultoa() _lseek() Il conviendra dutiliser directement ces fonctions pour les dveloppements futurs. Dans ce cadre, ltude ralise prconise lutilisation de ces fonctions dans le cadre du dveloppement sous la suite Microsoft Visual Studio 2010 Un mmorandum dutilisation de ces nouvelles fonctions est joint en annexes \ VIII.5 Mmorandum dutilisation de fonctions normes CRT et Posix (page 102). Problmes lis la version 2010 de Microsoft Visual Studio

\ III.2.2.7.

Alors que nous dcidions dutiliser Microsoft Visual Studio 2010 en dbut du projet, cet environnement de dveloppement intgr navait quun mois. La jeunesse du programme naura pas t sans consquence sur la mission. Au cours dun dbogage, un crash de MorFi provoqua un arrt irrcuprable de lenvironnement de dveloppement lui-mme. Ds lors il devint impossible douvrir un simple fichier texte laide de lIDE : toute tentative dbouchant sur un crash inexpliqu du systme. Plus grave encore, ce problme na pas pu tre rsolu en rinitialisant les paramtres dutilisateur, ni en changeant de session, ni mme en rinstallant la suite logicielle ! Le seul recours aura t de signaler le problme Microsoft sur les forums MSDNA et dattendre une rponse en esprant que celle-ci rsolve le problme. Afin de continuer le dveloppement, le projet a t port sous un environnement de dveloppement intermdiaire, savoir Microsoft Visual Studio 2008 (dans la version Express, relativement limite). Enfin lorsque la premire rponse fut apporte par Microsoft, environ une semaine plus tard, le problme nen tait plus un, puisque la suite fonctionnait de nouveau, pour une raison inexplique. Un correctif li une mise jour ? Quoi quil en soit, le dveloppement a pu continuer sous le dernier environnement de dveloppement de Microsoft. Nous noterons quil est toujours dlicat, voir risqu, dutiliser un logiciel rcent en environnement de production. Ici lutilisation de la suite logicielle Microsoft Visual Studio 2010 est avant tout un choix technologique, ainsi quune prise de garantie concernant lvolutivit du logiciel. Mais cette relative avance technologique se fait au dtriment, du moins dans un premier temps, de lutilisation dune plateforme prouve, donc forcment plus ancienne, mais aussi plus stable de facto.

SIMONJOLIET 37\128

\2010

CENTRE TECHNIQUE DU PAPIER

\ IV.

REALISATION TECHNIQUE
\ IV.1 REUNION DE PRE-PRODUCTION

Le style graphique de MorFi doit tre revu, cest le point primordial du projet. Dans ce contexte il est ncessaire dinformer les intresss des changements prvus. Cest le but de la runion organise le Vendredi 16 Juillet 2010 (voir compte rendu page 81). Les parties suivantes rsultent des dcisions prises au cours de cette runion. \ IV.1.1. Aspect initial de MorFi

Linterface actuelle de MorFi est jointe en annexe \ VIII.12.1 Rendu initial (page 113). Avant de se lancer dans le projet et donc dans la reconstruction du logiciel MorFi, il est indispensable dobserver le code source et plus particulirement la partie spcifique lordonnancement des fentres. Nous avons dj observ les diffrents fichiers composant le projet ; il sagit maintenant davoir une vision globale du fonctionnement du logiciel. La meilleure manire dy parvenir reste encore dobserver les variables globales du programme associes laffichage. Celles-ci sont dclares dans le fichier GraphicWnd.c ; en voici quelques-unes pour illustrer nos propos : Le tableau stockant les titres des histogrammes :
ppszTabTitreHisto_G[2][18][90+1];

Le tableau stockant les titres des fentres :


ppszTabTitre_G[2][10][90+1]

Le tableau stockant les pages graphiques :


pppnTabVisu_G[CFG_k_NBMAX_PAGES_LAB][CFG_k_NBMAX_FENETRES][6];

Note : CFG_k_NBMAX_PAGES_LAB est dfini 4, et

CFG_k_NBMAX_FENETRES

On note ici par exemple quune session de MorFi est compose de 4 Pages , elles-mmes composes de 6 Fentres pouvant reprsenter un lment (courbe, histogramme). Cette maquette est jointe en haute rsolution en annexe \ VIII.12.1 Maquette initiale (page 113).

Une fentre Une page

\ FIGURE IV.1-1 Agencement de MorFi

38\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ IV

CENTRE TECHNIQUE DU PAPIER

\ IV.2 REALISATION TECHNIQUE


Une fois les choix technologiques valids, il faut tudier les options graphiques du logiciel. Une entte (ou splash screen) est prsente louverture de celui-ci. Celle-ci a pour but laffichage du logotype de MorFi. Ce visuel est le premier auquel lutilisateur est confront. Il convient de le soigner tout particulirement. En effet il nest clairement plus en phase avec linformatique daujourdhui. Cest pourquoi la premire tude graphique portera sur cet cran. Il conviendra de trouver un nouvel identifiant visuel au logiciel, autorisant ensuite la dfinition des nouveaux lments tels que des icnes (entre autre). Si le logotype de MorFi est changer, les trois autres logotypes du CTP, de lEFPG20 INPG21 et de TechPap le sont galement.

\ FIGURE IV.2-1 Splash screen original du logiciel MorFi

Laspect du logiciel est monotone, terne et peu engageant. Puisque le Centre Technique du Papier sest dot en 2007 dune charte graphique, il serait normal de lutiliser afin de rajeunir linterface dune part et de linclure dautre part, dans une dynamique de standardisation de la communication par le biais des logiciels. Cela aurait pour effet la cration dune identit graphique associe non seulement aux logiciels, mais aussi lensemble de la production du CTP. Cest l un point capital. (CTP, 2007)

Ecole Franaise de Papeterie de Grenoble (EFPG), actuellement lcole internationale du papier, de la communication imprime et des biomatriaux (ou INP Pagora). Voir Introduction. 21 Instituts Nationaux Polytechniques, actuellement Institut polytechnique de Grenoble (IPG)

20

SIMONJOLIET 39\128

\2010

CENTRE TECHNIQUE DU PAPIER

\ IV.3 CHOIX TECHNOLOGIQUES


\ IV.3.1. La bibliothque Chart Director

Dans la version actuelle de MorFi (v7.13.00), les diffrents graphiques et tableaux danalyse sont dessins de manire archaque, ligne par ligne ou point par point. Cette mthode date en effet de la premire version du logiciel (1996). Bien quelle ait lavantage dune relative puissance, elle ne corrle cependant plus avec les exigences actuelles.

\ FIGURE IV.3.1-1 Un histogramme sous MorFi 7.13

\ FIGURE IV.3.1-2 Une distribution sous MorFi 7.13

Aussi il a t dcid de se tourner vers la bibliothque graphique Chart Director. Celle-ci possde tout dabord lavantage dtre multiplateforme. Elle a dj t utilise lors de dveloppement de logiciels de mesures dvelopps sous Visual Basic 6.0 au sein du CTP. Elle est dautre part exploitable sous dautres environnements de dveloppement tels que .NET, Java, ASP, COM, VB, PHP, Perl, Python, Ruby, ColdFusion, et enfin C++. Nous utiliserons cette dernire version de Chart Director. Enfin notre dernier argument -et non le moindre- concerne le cot de la solution, extrmement avantageux. La licence de dveloppement est de 99$ pour cette librairie graphique trs complte.

\ FIGURE IV.3.1-3 Exemple dlments raliss laide de Chart Director

\ IV.3.1.1.

Mise en place des solutions Chart Director

Afin de mettre en place cette solution, dont le but est de remplacer les lments existants par des graphiques daspects modernes, celle-ci doit tre intgre au projet. Dans cette optique il convient avant tout de crer un programme de test, permettant de prendre en main lutilisation des fonctions courantes en situation. Pass cette tape, il est possible dintgrer ces fonctions au programme MorFi. La mise en place de Chart Director requiert plusieurs lments, savoir :

40\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ IV

CENTRE TECHNIQUE DU PAPIER

La liaison avec la librairie statique chartdir50.lib, placer dans le dossier des librairies de Microsoft Visual Studio. La liaison avec la librairie dynamique chartdir.dll, placer dans le rpertoire systme C:\Windows\system32\. La liaison avec le fichier header22 de Chart director, chartdir.h, lui-mme li (link via un #include) en interne avec deux autres headers, bdchartdir.h, financechart.h et memblock.h. Le fichier de licence de chartdir.lic, placer dans le rpertoire systme C:\Windows\system32\.

Pour lutilisation que nous en aurons, il est ncessaire dinclure dans le code, le header, de la manire classique :
#include "chartdir.h"

Ensuite certaines lignes de code spcifiques permettront de gnrer toute sorte de graphique. En rgle gnrale la gnration dun tel lment se compose de ces diffrentes phases :
Gnration d'un lment XYChart

Incrustation des champs de texte (titre, lgendes)

Cration d'un PlotArea

Insertion des donnes

Export du chart en mmoire

Affichage du chart

Laffichage du graphique peut tre ralis de diffrentes manires. Il est possible par exemple dutiliser les MFC23. Nous nuserons pas de cette mthode dans notre cas. Deux autres solutions sont alors possibles : Crer un bitmap en mmoire puis lafficher en utilisant la fonction StretchDIBits. Crer un bitmap en mmoire puis le convertir en HBITMAP et le placer dans un contexte mmoire (hDCMem) afin de lafficher laide dune fonction plus conome en ressources, BitBlt. Cest la seconde mthode qui sera choisie dans une optique doptimisation du programme. En effet la fonction StretchDIBits prend en charge le redimensionnement des bitmaps, ainsi que leur mthode dencodage de couleurs (PAL ou NTSC). Cela na strictement aucun intrt dans notre application. Le graphique est gnr en local aux dimensions spcifies pour lutilisation demande. La deuxime mthode est un peu plus complexe mettre en uvre mais prsente lintrt dtre plus efficace. Afin de garantir un affichage dynamique de ces lments, il a t choisi de crer une fonction par lment Chart Director. Il devient ainsi ais dappeler laffichage dun graphique avec un certain nombre darguments, tels que par exemple :
Un header est un fichier de dfinition de fonction. Les Microsoft Foundation Class (MFC) sont une bibliothque de classes en C++ encapsulant l'API Win32 (crite en C) de Windows.
23 22

SIMONJOLIET 41\128

\2010

CENTRE TECHNIQUE DU PAPIER

Les coordonnes du premier point suprieur (en haut gauche, soit deux entiers X1 et Y1). Les coordonnes du dernier point infrieur (en bas droite, soit deux entiers X2 et Y2). Les donnes (la premire adresse dun tableau de doubles24, ainsi que le nombre entier dlments de ce tableau). Le titre du graphique (une chane de caractres).

Ces fonctions sont dfinies dans deux fichiers : une dfinition prototype dans un fichier header *.h, ainsi que dans le fichier source *.cpp contenant le corps de ces fonctions C++. Ces deux fichiers portent le nom fonctionsChartDir.c et sont situs respectivement dans les dossiers /Include et /Specif de la solution MorFi. Lisolement de cette source du programme principal est motiv par le fait que lintgralit des sources possde lextension *.c. Elle est donc vu par le compilateur comme du C natif, alors que les fonctions Chart Director sont intgralement rdiges en C++ dans des fichiers dextension *.cpp. Effectivement, intgrer directement cette source au programme existant engendrerait une myriade derreurs. Ensuite lactivation de la licence de Chart Director seffectue simplement en plaant le fichier de licence, chartdir.lic dans le rpertoire contenant la DLL de Chart Director, soit C:\Windows\system32. Une fois la librairie active, les graphiques nont plus le watermark25 jaune spcifique de la version dvaluation. Afin dutiliser les fonctions rcrites, il convient de lier le contexte appelant au fichier header des fonctions Chart Director, appel fonctionsChartDir.h. Dans celui-ci, nous dfinirons les prototypes26 de nos fonctions. Ainsi il devient possible dutiliser les fonctions cres dans fonctionsChartDir.c. Ces fonctions sont : AfficheHistogramme_ChartDirector() Fonction cre dans le but de remplacer les lments histogrammes de MorFi. Elle prend comme arguments : Les coordonnes, soit x1, y1 et y2, y2, respectivement les points situs en haut gauche et en bas droite (int : entiers) La taille du tableau dabscisse (int : entier) Les valeurs minimum des abscisses (double[] : tableau de doubles) Les valeurs maximum des abscisses (double[] : tableau de doubles) La taille du tableau de donnes (int : entier) Les donnes spcifiques au graphique (double[] : tableau de doubles) Le titre du graphique (*char : chane de caractres) La lgende dordonne du graphique (*char : chane de caractres) La lgende dabscisse du graphique (*char : chane de caractres) La prise en compte de limpression (BOOL : boolen) Nous noterons que Chart Director accepte en abscisse deux types dlments : les flottants en double prcision et les chanes de caractres. Pour MorFi, il est intressant de noter que les abscisses dun

Un double est un type de donne similaire au type float mais en double prcision. Le watermarking est une technique permettant d'ajouter des informations de copyright ou d'autres messages de vrification une image numrique 26 Le prototype d'une fonction (d'une procdure ou d'une mthode) dsigne la syntaxe d'appel de cette fonction. Il spcifie ce que la fonction fait mais ne donne pas de dtails sur la faon dont elle le ralise.
25

24

42\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ IV

CENTRE TECHNIQUE DU PAPIER

histogramme sont repres par leur intervalle (de type ; ) et non par une unique valeur comme cest souvent le cas. Ce point sera donc toujours surveiller lors du dveloppement. Dans ce cas, un tableau de flottants en double prcision ne suffit pas. Il est ncessaire de crer une fonction permettant dobtenir le mme rsultat sur un intervalle et non sur une valeur. Pour ce faire, nous rcuprerons tout dabord les valeurs minimum et maximum des abscisses :
double labelsMin[], double labelsMax[],

Puis nous dclarons un tableau de chanes de caractres et un tableau de pointeurs de chanes de caractres que nous initialiserons avec llment prcdent :
int vli; //Tableau de caractre des abscisses char TableDabscisse[ELEMENT_TABLEAU_MAX][20] = {0}; //Tableau de pointeurs de caractre des abscisses char* PointDabscisse[ELEMENT_TABLEAU_MAX] = {0}; /*Initialication du tableau des pointeurs d'abscisses*/ for (vli=0;vli<ELEMENT_TABLEAU_MAX;vli++) { PointDabscisse[vli] = TableDabscisse[vli]; }

Ensuite, il suffit dcrire dans chaque case de TableDabscisse une chane de caractres compose de la valeur minimum et de la valeur maximum, avec comme exception la valeur finale dont lexpression est --- .
sprintf(TableDabscisse[vli],"%.1f\n%.1f",labelsMin[vli], labelsMax[vli]);

Nous plaons alors cette expression dans une boucle afin dinitialiser un tableau de chane de caractres aux caractristiques choisies. Concernant la dernire case du tableau, cest cette ligne qui sera utilise :
sprintf(TableDabscisse[sizeOfSendedTable-1],"%.1f\n---",labelsMin[sizeOfSendedTable-1]);

Note : le nombre de chiffres aprs la virgule sadapte en fonction du nombre de chiffres significatifs que possde llment, afin de rendre les coordonnes de laxe plus lisibles dans le cas de grandes units. Enfin il suffit dafficher la lgende en utilisant notre tableau de pointeurs :
c->xAxis()->setLabels(StringArray(PointDabscisse, sizeOfSendedTable));

Note : ces fonctions (xAxis, Director.

setLabels

et

StringArray)

sont spcifiques la bibliothque Chart

Dans la version originale de MorFi, les valeurs des coordonnes dhistogrammes sont places audessus de leurs barres respectives. Nous devrons donc raliser ce dtail, sachant quil nest pas utile dafficher ces valeurs si le tableau est vide. Nous conditionnerons donc laffichage des valeurs par un boolen. Nous parcourrons le tableau jusqu' trouver une valeur non nulle. Lorsquelle est atteinte, le boolen interdisant lcriture devient Faux (FALSE) autorisant ainsi laffichage.
/*Test des valeurs du tableau*/

SIMONJOLIET 43\128

\2010

CENTRE TECHNIQUE DU PAPIER

for (vli=0;vli<ELEMENT_TABLEAU_MAX;vli++) { if (valeursHistogramme[vli]!=0) TableauVide=FALSE; }

A loppos, si aucune valeur nest rencontre, le boolen sera Vrai (TRUE) tel quil a t initialement dfinit, interdisant par consquent laffichage. Si laffichage est autoris, le type dlment est pris en compte afin de clarifier les valeurs lues : Si le graphique est en pourcent, alors nous afficherons un chiffre aprs la virgule, puis le signe % Si le graphique est en nombre dlments il ny aura alors ni dcimale, ni unit. Cet extrait de code montre comment cet aspect a t apprhend :
/*Si le tableau n'est pas vide*/ if (!TableauVide) { //On ajoute la valeur en haut du graphique, arrondie deux chiffres aprs la virgule layer->setAggregateLabelStyle("calibrib.ttf", 8, layer->yZoneColor(0, 0xCC3300,0x000000)); //Test si mode pourcentage ou non if(ActivePourcent) { //Alors, affichage de deux chiffres aprs la virgule et le caractre "%" layer->setAggregateLabelFormat("{value|1}%"); }else { //Sinon, affichage du nombre sans dcimales layer->setAggregateLabelFormat("{value|0}"); } //Enfin, criture des valeurs au-dessus des barres layer->addDataSet(DoubleArray(valeursHistogramme, sizeOfSendedTable), 0x00000000); };

Voici le rsultat de la fonction AfficheHistogramme_ChartDirector() :

\ FIGURE IV.3.1-4 Le nouvel lment histogramme

AfficheDistribution_ChartDirector() Fonction cre dans le but de remplacer les lments de type distribution de MorFi. Elle prend comme arguments : Les coordonnes, soit x1, y1 et y2, y2, respectivement les points situs en haut gauche, et en bas droite (int : entiers) La taille du tableau dabscisse (int : entier) Les valeurs minimum des abscisses (double[] : tableau de doubles) 44\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ IV

CENTRE TECHNIQUE DU PAPIER

Les valeurs maximum des abscisses (double[] : tableau de doubles) La taille du tableau de donnes (int : entier) Les donnes spcifiques au graphique (double[110] : tableau de 110 doubles) Le titre du graphique (*char : chane de caractres) La lgende dordonne du graphique (*char : chane de caractres) La lgende dabscisse du graphique (*char : chane de caractres) La prise en compte de limpression (BOOL : boolen) Une telle fonction est appele au sein du fichier source distrib.c . Celle-ci possde de nombreuses lignes de code qui nont plus dutilit. En effet la distribution tait auparavant dessine au moyen dlments simples comme des lignes ou des points ; la mise en uvre tait donc fastidieuse. Cette source a donc t intgralement nettoye. Les lments restants seront convertis aux nouvelles normes CRT. Voici le rsultat de la fonction AfficheDistribution_ChartDirector() :

\ FIGURE IV.3.1-5 Un nouvel lment de distribution

Note : cette fonction prend en charge le pointeur de la souris. Lors de la capture dun clic gauche sur llment, celui-ci retournera sous forme dun menu contextuel la valeur Y dune position X. Auparavant cette gestion tait simple, la fonction dessinant un point en fonction dune valeur. Il tait alors facile de prdire cette mme valeur grce la coordonne du pointeur. La nouvelle fonction ne garantit plus cet aspect heuristique (la fonction se contentant dafficher un bitmap). La coordonne doit tre prsent calcule en fonction des seules informations connues que sont les marges verticales et horizontales utilises pour la gnration de llment.

AfficheMatrice_ChartDirector() Fonction cre dans le but de remplacer les matrices de MorFi. Elle prend comme arguments : Les coordonnes, soit x1, y1 et y2, y2, respectivement les points situs en haut gauche, et en bas droite (int : entiers) La taille du tableau dabscisse (int : entier) Les valeurs minimum des abscisses (double[] : tableau de doubles) Les valeurs maximum des abscisses (double[] : tableau de doubles)

SIMONJOLIET 45\128

\2010

CENTRE TECHNIQUE DU PAPIER

La taille du tableau dordonne (int : entier) Les valeurs minimums des ordonnes (double[] : tableau de doubles) Les valeurs maximum des ordonnes (double[] : tableau de doubles) Les donnes spcifiques au graphique (double[][] : tableau deux dimensions de doubles) Le titre du graphique (*char : chane de caractres) La lgende dordonne du graphique (*char : chane de caractres) La lgende dabscisse du graphique (*char : chane de caractres) La lgende de lchelle (*char) La prise en compte de limpression (BOOL : boolen) Les matrices, ou tableau de synthse (nom est donn par le logiciel cet lment, qui doit tre modifi afin dviter une confusion avec le tableau de synthse MorFi dont le rle est trs diffrent) permettent de visualiser la rpartition dlments en fonction de critres spcifiques. Il sagit essentiellement dans notre cas de la quantit, en nombre dlments ou en pourcentage, associe un rapport longueur/largueur dfini. Lenjeu dun tel lment est de pouvoir comparer trs facilement deux analyses de ptes, puisquil a une vocation avant tout graphique. Il ne se prte pourtant pas facilement cette application, car dlicat interprter. Laspect graphique se trouve limit des chiffres de diffrentes couleurs sur une grille ; rien de trs parlant pour loprateur. Cet lment est dclin en trois applications diffrentes : - La synthse fibres - La synthse bchettes - La synthse vaisseaux Voici laspect initial des synthses -ici, une Rpartition fibres en % (Non pondre)- :

\ FIGURE IV.3.1-6 Une synthse sous MorFi 7.13

Le problme ici nest pas tant que cet lment sintgre mal avec les autres ; il est en effet possible de gnrer cette matrice sur un fond gnr par Chart Director ; cest ce qui est fait dans la fonction suivante (AfficheZoneTableau_ChartDirector). Linconvnient de cet lment est son incapacit organiser les donnes afin de les rendre facilement assimilables pour lutilisateur. En effet malgr la mise en couleur des chiffres, il est difficile de dterminer la rpartition des fibres issue de limage affiche prcdemment. Cest l tout lenjeu de notre nouvel lment. Observons tout dabord la structure de donnes utilise pour afficher cette synthse (ou matrice). Ce tableau possde 10 points dabscisses et 10 points dordonnes ; il peut y en avoir moins (mais jamais plus) et la matrice nest pas forcment carre (cas de matrice en 86 ou 75). Quoi quil en

46\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ IV

CENTRE TECHNIQUE DU PAPIER

soit, il existe au mieux un tableau contenant les 100 valeurs affiches. Celles-ci sont stockes dans un tableau deux dimensions nomm tabres[10][10].
double tabres[10][10];

Extrait de Synthese.c La fonction gnrant la nouvelle matrice (via un lment Contour Chart) a besoin de trois tableaux : un tableau de valeurs dabscisses (10), un tableau de valeurs dordonnes (10) et un tableau de valeurs brutes (100). Nous crerons donc ces lments que nous chargerons notamment avec les informations prsentes dans tabres, passes en paramtre la fonction gnrant la matrice. Ce tableau deux dimensions est nomm valeursBrutes. En effet elles doivent tre mises en forme avant dtre affiches. Pour ce faire, il faut parcourir ce double tableau :
for(vly = 0; vly < sizeOfYAxis; vly++) { for(vlx = 0; vlx < sizeOfXAxis; vlx++) { if(valeursBrutes[vlx][vly]>0) { //Au moins une valeur existe : activation de laffichage ActiveAffichage=TRUE; Valeurs[vlx+(sizeOfXAxis*vly)]=valeursBrutes[vlx][vly]; } else { //Sinon, initialisation de la valeur Valeurs[vlx+(sizeOfXAxis*vly)]=0; }; }; };

Extrait de fonctionChartDir.cpp Il convient de tester si le tableau est charg ou non. Si ce nest pas le cas, la fonction fille naura pas en charge la cration dun lment vide (inutilement coteuse en ressources). Une telle condition avait dj t implante dans la fonction AfficheHistogramme_ChartDirector() mais plutt par bon sens que par souci doptimisation pure. Elle permettait de ne pas afficher les valeurs lorsque le tableau est vide. Ici cest le drapeau (boolen) ActiveAffichage qui indique lautorisation de laffichage et donc le calcul du contour. Lors de laffichage dune matrice, nous utilisons deux fonctions Chart Director : un Scatlayer et un Ces deux fonctions utilisent le mme lment chart , la structure c . Il suffit alors de gnrer un bitmap avec comme argument cette structure en paramtre, linstar des autres utilisations.
Contourlayer.

Voici le rsultat de la fonction AfficheMatrice_ChartDirector() :

\ FIGURE IV.3.1-7 Une nouvelle matrice

SIMONJOLIET 47\128

\2010

CENTRE TECHNIQUE DU PAPIER

AfficheZoneTableau_ChartDirector() Fonction cre dans le but de remplacer larrire-plan des autres fonctions de MorFi, comme les tableaux. Elle prend comme arguments : Les coordonnes, soit x1, y1 et y2, y2, respectivement les points situs en haut gauche, et en bas droite (int : entiers) Le titre du graphique (*char : chane de caractres) La lgende du graphique (&char : pointeur de chane de caractres) La prise en compte de limpression (BOOL : boolen) Concernant les tableaux, lutilisation de la librairie Chart Director est le moyen dobtenir pour ces lments un visuel cohrent avec le reste du logiciel. En effet il nest pas utile de rcrire ces lments qui fonctionnent sans problme. Malgr cela, comme pour le reste du logiciel, il est ncessaire de leur offrir une cure de jouvence. Voici laspect initial des tableaux (ici, un tableau de synthse MorFi) :

\ FIGURE IV.3.1-8 Un tableau sous MorFi 7.13

Le style est plutt quelconque par rapport aux nouveaux lments. La bibliothque Chart Director ne permet paradoxalement pas de raliser simplement de tels graphiques. Ce tableau est en effet un peu particulier. Il est donc dcid de nutiliser Chart Director que pour le fond de ce dernier ; cest le rle de la fonction AfficheZoneTableau_ChartDirector(). Les tableaux sont gnrs au sein du fichier source tableau.c ; ce fichier sera donc modifi afin de : Placer avant le dessin du tableau, une zone darrire-plan gnre par Chart Director aux coordonnes fournies en paramtre la fonction
AfficheZoneTableau_ChartDirector(hDC, x1,y1,x2,y2, Titre);

Modifier la police et la couleur, de texte et de fond, des lments textuels du tableau


hFontOld = SelectObject(hDC,hMoyenneFont_G);

On slectionne la nouvelle police de caractres (voir chapitre \ IV.3.3 Redfinition des formulaires, page 52). La taille est augmente par rapport lorigine pour une meilleure lisibilit.
SetBkMode(hDC, TRANSPARENT);

La couleur de fond du texte tait grise auparavant, ce qui est cohrent puisque le fond du graphique tait gris lui aussi. A prsent le fond est un dgrad, la couleur de fond du texte doit donc tre transparente.

48\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ IV

CENTRE TECHNIQUE DU PAPIER

_AfficheLegende(hDC,x1+10,y1+h,LigneTxt[1],BLEU);

La couleur BLEU (note : les couleurs crites en majuscules reprsentent les constantes long27 RGB dfinies dans MorFi) a t modifie afin dtre la mme que certains lments des systmes dexploitation Windows. Auparavant le texte tait soit noir (NOIR), soit gris (GRISF), soit bleu (BLEU). Il ne sera plus jamais gris prsent par souci de lisibilit. Modifier lagencement et la couleur des lignes
Ligne(hDC,x1,y1+h*10,x1+l+2*l1,y1+h*10,BLANC);

Afin de rendre ces tableaux plus modernes, en plus du fond, cest aussi sa structure qui sera revue. La signature Ligne() est une fonction interne au code MorFi. Dutilisation relativement classique, qui consiste en lexcution cumul dun MoveToEx()28 et dun LineTo()29. Le tableau actuel parat trop rigide et fig par rapport aux autres lments et la couleur gris fonc des sparations rend lensemble peu attractif. Ainsi les lignes verticales seront supprimes au profit de lignes uniquement horizontales et de couleurs blanches (BLANC) cette fois. Une ligne paisse sparera les lments gnraux des lments spcifiques. Voici le rsultat de la fonction AfficheZoneTableau_ChartDirector() avec un tableau de synthse :

\ FIGURE IV.3.1-9 Un nouveau tableau

Note : Le logiciel MorFi possde dautres types de tableaux. Il existe en effet 17 types diffrents (par exemple, Surface des bchettes, Angles des Coudes, Longueur Pondre en Surface des Fibres ), ainsi quun tableau de synthse et un tableau StatMorf . Lors de la gnration dun lment, nous passons le titre en paramtre. Il suffit alors de charger la variable stockant le titre dun tableau. Par exemple, dans le cas de la Longueur Pondre en Surface des Fibres :
case GWND_k_MOYSURF: LoadString(hInst_G, ID_T_LONGSURF_TITRE_F, Titre,78); break;

La variable Titre stocke donc cet instant la chane de caractres de la String Table30. Il suffira donc deffectuer comme montr dans lexemple, un LoadString31, afin de rcuprer cette valeur puis dutiliser la variable Titre comme paramtre dappel de larrire-plan du tableau.
Un long (unsigned long int dans notre cas) est un entier sur 4 octets allant de 0 4 294 967 295 MoveToEx permet de placer le curseur une certaine position en fonction de coordonnes donnes. 29 LineTo permet de tracer une ligne partant de la position actuelle du curseur vers les coordonnes passes en paramtres.
28 27

SIMONJOLIET 49\128

\2010

CENTRE TECHNIQUE DU PAPIER

Note : lappel de cette fonction, LoadString, voluera au cours du dveloppement du logiciel afin de permettre une dynamique plus large de localisation du logiciel (en anglais et en allemand pour linstant). Voir chapitre \ IV.3.13 Externalisation de la localisation (page 67). Certains tableaux (que nous appellerons tableaux dlments ) prennent aussi en compte la valeur moyenne ; celle-ci doit tre affiche de la mme manire que dans les histogrammes et dans les distributions, sous forme dune bote de lgende. Il existe initialement une fonction dans le code original permettant dcrire au bas dun lment : AfficheBasImage(). Cette fonction prsente lintrt dtre adaptable dans plusieurs cas. En effet les tableaux des courbures des fibres ont spcifiquement besoin de deux lignes quand les autres nen nont besoin que dune. Le problme est quil est alors ncessaire de passer par deux variables et donc initialement deux TextOut(). La mthode a donc t compltement rcrite. A prsent AfficheBasImage() se nommera RequeteLegende(), naffichera plus aucun texte mais prendra un nouveau paramtre dentre/sortie : *SortieLegende qui est un pointeur de chane de caractres. Comme auparavant, la fonction ralisera les requtes et les copiera ladresse du pointeur passe en paramtre. Ainsi pour une fonction AfficheZoneTableau_ChartDirector(), il suffira de passer en argument la chane de caractres point par *SortieLegende, dment modifie par RequeteLegende(), afin dafficher la lgende dans llment Chart Director. Ceci nest quun exemple. Le fonctionnement est identique avec les autres prototypes. Lorsque deux lignes sont ncessaires laffichage de la lgende, il suffit de reprendre la chane de caractres puis dajouter la suite un retour chariot, suivi de la chane de caractres suivante. Lorsquun tel paramtre est pass une fonction Chart Director, celle-ci sadaptera automatiquement pour afficher la lgende sur deux lignes. Voici le rsultat de la fonction AfficheZoneTableau_ChartDirector() avec un tableau dangles des coudes :

\ FIGURE IV.3.1-10 Un nouveau tableau dangle des coudes

Note : nous sommes ici dans le cas particulier que nous voquions plus haut dune lgende sur deux lignes.

Une String Table dfinie une ou plusieurs chane de caractres dans une ressource pour une. Ces ressources sont de simples chanes ASCII qui peuvent tre charges laide de la fonction LoadString. 31 La fonction LoadString permet de copier une chane de caractres stockes dans un fichier de ressources depuis un excutable et de copier cette chane de caractres dans un buffer.

30

50\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ IV

CENTRE TECHNIQUE DU PAPIER

\ IV.3.2.

Liaison graphique au systme dexploitation

Lors dun dveloppement, il est important de dfinir comment un logiciel sintgrera dans un systme dexploitation. Ici cest du caractre visuel dont il est question. Le formulaire douverture (RECHERCHEDLGBOX) a donc t remplac par le formulaire Windows standard. Pour ce faire, nous contournerons la fonction _LitCourbe() que nous remplacerons par un GetSaveFileName(). Celle-ci prend en paramtre dentre/sortie une structure de donnes de type OPENFILENAME. Nous dclarons donc une telle structure avec certains paramtres, tels que : -

Le type de fichiers slectionner, en loccurrence les types MorFi Laboratoire (*.mlb). Le rpertoire de recherche par dfaut, ici .\data\ . Le nombre de fichiers maximum slectionner, un seul.

Il est possible de passer dautres paramtres cette structure. Nous nous limiterons ceux-ci, qui sont spcifiques notre application. Au sein de cette structure, lorsque lutilisateur a slectionn le fichier quil dsirait, le chemin absolu du fichier est pass en paramtre au mme titre quune chane de caractres (Structure.lpstrFile). Nous copierons donc cette chane dans la variable exploitant cette donne afin de permettre louverture du fichier par MorFi. Sil convient de lier tous les formulaires au style du systme, il nexiste pas toujours de botes de dialogues cls en main adapts une application spcifique. Nous nous contenterons donc bien souvent damliorer lexistant. Lexemple suivant illustre clairement cet tat de fait : nous avons dune part un formulaire, gauche, exempt de tout style graphique quand le second, droite, est cette fois li au style du systme dexploitation hte (en loccurrence, Microsoft Windows XP).

\ FIGURE IV.3.2-1 Un formulaire non li au style du systme

\ FIGURE IV.3.2-2 Le mme formulaire, li au style du systme

Lier le style graphique au systme hte garanti une meilleure intgration visuelle dans celui-ci, lassurance dune interface propre et pure et donc un meilleur aperu aux yeux de lutilisateur. Il est en effet plus facile dapporter du crdit une telle ralisation, celle-ci paraissant invitablement de meilleure facture. Pour lier le style du logiciel au systme dexploitation, il suffit de pointer la librairie dynamique Comctl32.dll. Cette liaison seffectue par lajout dun fichier *.cpl.manifest au projet. Lextrait de ce fichier est joint en annexe \ VIII.17.6 Fichier XML de liaison aux common-controls (page 121). Ralis de la sorte, le logiciel sadaptera au style graphique de systmes dexploitations encore plus rcents, tels que Microsoft Windows Vista, ou encore Microsoft Windows 7. Linterface sera alors modifie sans lajout de la moindre ligne de code.

SIMONJOLIET 51\128

\2010

CENTRE TECHNIQUE DU PAPIER

\ IV.3.3.

Redfinition des formulaires

Toujours dans loptique de moderniser linterface, il est prvu de ractualiser les formulaires du logiciel. Il convient de connatre avant tout les formulaires les plus utiliss par les utilisateurs, afin de pouvoir repenser ceux-ci sur le plan graphique. Tout dabord les formulaires hritent du style graphique de Windows XP (ce que nous avons vu au cours du chapitre prcdent). Cest une bonne base mais nous ne pouvons que difficilement nous en contenter : les logiciels actuels sont trs graphiques, jusque dans leurs formulaires. Les lments textuels sont stocks dans le fichier de ressource. Ce qui ne va pas sans poser problme : lors de la compilation du logiciel, il faut associer le fichier de ressource li la langue (le logiciel MorFi est traduit en anglais et en allemand). De ce fait, un changement dans un formulaire dans version franaise ne sera pas rpercut sur les autres versions. Ce type de fonctionnement est un hritage archaque de la base du logiciel, que nous proposons de rsoudre par lutilisation dun fichier *.ini, *.csv ou encore *.xml. Voir le chapitre \ IV.3.13 Externalisation de la localisation (page 67). Voici titre dexemple un fomulaire tir de la version v7.13.00 du logiciel MorFi. Cette bote de dialogue, IMPRIMDLGBOX, est linterface permettant limpression des pages graphiques (ou onglets prsent) dans son utilisation classique. Plaons en comparaison lancienne et la nouvelle version de ce formulaire, dot dlments graphiques, li au systme dexploitation et dot dun bandeau.

\ FIGURE IV.3.3-1 Formulaire initial

\ FIGURE IV.3.3-2 Formulaire retravaill

\ IV.3.4.

Le Ruban

Le ruban (aussi connu sous son nom anglais, ribbon) est une interface utilisateur graphique, compos d'un bandeau en haut de la fentre qui expose les principales fonctions du logiciel. L'utilisateur retrouve donc en un seul endroit tous ses contrles, avec des rubans adapts au contexte des donnes. Il sagit en quelque sorte du successeur dsign des vieillissantes barres doutils.

52\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ IV

CENTRE TECHNIQUE DU PAPIER

\ FIGURE IV.3.4-1 Exemple demploi du ruban sous Microsoft Paint Le choix de lutilisation dun ruban est avant tout motiv par son aspect moderne et par la prsentation synthtique de la majeure partie des fonctions du programme ou des commandes en un mme lieu, facilement reprable. Le ruban a t lobjet dune mise en uvre rcente ; il a connu son essor la sortie de Microsoft Office 2007, dans le cadre de la nouvelle Microsoft Fluent User Interface32 (MFUI) et remplace les menus, les barres d'outils et autres volets. Microsoft indique que le but est de placer toutes les fonctionnalits dun logiciel en un seul endroit et par consquent, den amliorer la convivialit. Cest chose faite depuis la gnralisation du ruban des outils standard de Microsoft Windows 7, tels que WordPad, Movie Maker ou encore Paint. Certains des onglets (contextuels) n'apparaissent que lorsqu'un objet est slectionn. Les onglets contextuels exposent seulement les fonctionnalits spcifiques l'objet avec un accent mis sur laspect pratique. Par exemple, la slection d'une image fait apparatre des outils contextuels propres celle-ci, qui prsentent alors les commandes de travail. Les onglets contextuels restent cachs lorsque l'objet sur lequel l'utilisateur travaille n'est pas slectionn. Au sein du projet de restauration du logiciel MorFi, lutilisation dun tel lment graphique ne pouvait pas mieux reprsenter lide doffrir lutilisateur un visuel proche du paysage logiciel actuel . Au cours de la runion de pr-production, le concept du ruban a t accept pour le dveloppement, avec certaines restrictions cependant. En effet si ce contrle voit son intrt dans des applications grand public o lergonomie des menus est cruciale, ce nest pas le pour ce logiciel professionnel. Mais il est du reste indniable que linterface propre et pure du ruban serait un atout majeur lors de la vente de ce produit. Concernant lexistant, MorFi est dot de deux menus, situs respectivement en haut et en bas de la fentre. Ce type dinterface nest plus vraiment au got du jour. Ces deux barres seront donc fusionnes afin de nen former plus quune, regroupant toutes les fonctionnalits du logiciel. Celle-ci serait situe dans la partie suprieure de la fentre, linstar de llment ruban. Voici un aperu de la fentre principale du logiciel MorFi :

La Microsoft Fluent User Interface est une dfinition dun style graphique utilis pour une suite logicielle, ici pour la suite Office, dont les kits de dveloppement (SDK) sont mis disposition afin de donner la possibilit un utilisateur de crer une interface similaire.

32

SIMONJOLIET 53\128

\2010

CENTRE TECHNIQUE DU PAPIER

La runion de prproduction aura convenu du \ FIGURE IV.3.4-2 changement de cette Maquette de la version actuelle du logiciel MorFi interface. Les contrles utilisateurs seront classs de manire synthtique. Les boutons de slection des pages seront remplacs par des onglets. Toutes ces oprations ont pour seul but de moderniser linterface et doffrir un visuel cohrent avec loffre logicielle actuelle. Voir annexe \ VIII.13.2 Rendu final (page 114).

\ FIGURE IV.3.4-3 Maquette type de la future version du logiciel MorFi

54\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ IV

CENTRE TECHNIQUE DU PAPIER

Auparavant chaque page graphique possdait sa propre ressource. Non seulement ces bitmaps taient dun genre particulirement dmod, mais en plus la mthode navait rien de dynamique. Ils seront donc remplacs par des onglets dynamiques. \ FIGURE IV.3.4-4 Anciennes ressources utilises pour slectionner les pages graphiques Les chiffres actuellement placs sur les boutons seront remplacs par du texte, savoir le titre de la page graphique (par souci de comprhension, nous parlerons dsormais donglets). Ceci vite ainsi de rpter dans la barre de menu le titre de longlet actuel. Cet lment peut dailleurs tre supprim, laissant plus de place aux autres contrles du ruban.

Citation du code daffichage des onglets


/*Affiche du texte dans les onglets testInitOnglets permet de savoir si un lment onglet a t charg par la fonction d'affichage testSeleOnglets permet de savoir si un onglet est slectionn ou non On teste tout d'abord si les onglets ont t chargs */ if(testInitOnglets) { //Si oui, rcupration le contexte hDC=GetDC(hWnd); //On charge la police sur ce contexte hFont = SelectObject(hDC,hMoyenneFont_G); //Si les onglets sont affichs if(testSeleOnglets) { //Si l'onglet est activ, texte en fond blanc SetBkColor(hDC,BLANC); } else { //Sinon, l'onglet n'est pas slectionn : fond gris231 (onglets) SetBkColor(hDC,GRIS231); } //Stockage du nom de l'onglet [i] en mmoire, dans la variable titreOnglet strcpy_s(titreOnglet,40,ppszNomPage_G[i]); //Puis, affichage du nom de la page TextOut(hDC,Ruban.Onglets.H+i*Ruban.Onglets.L,Ruban.Onglets.Y+5,titreOnglet,strlen(titreOnglet));

};

Extrait du fichier PrincWnd.c Ces lignes supplmentaires viennent sajouter lvnement WM_DRAWITEM. Cet vnement est dclench par le contexte. Il est intercept dans la fonction MenuWndProc. Puis une instruction Switch33 redirige ces messages vers les codes associs. Le rle de lvnement WM_DRAWITEM est de redessiner, ds que cela est ncessaire, la barre de menus. En effet plac un autre endroit, le texte ajout aux onglets seffacerait si, par exemple, la fentre tait dplace, redimensionne, ou mme si une autre fentre tait place devant MorFi. Nous noterons lutilisation des variables Ruban.Onglets.*. Celles-ci reprsentent des donnes charges dans une structure depuis un fichier de configuration externe, que nous aborderons au cours du chapitre \ IV.3.6 Cration dun fichier de configuration (page 58). Lvnement WM_DRAWITEM a aussi en charge laffichage rafrachi dautres lments graphiques, tels que les boutons. Ces boutons ont actuellement un visuel assez similaire ceux des anciennes pages graphiques. Le remplacement de ces lments est dcrit dans le chapitre \ IV.3.8 Ajout de nouvelles fonctions au ruban (page 62). Voici leur aspect actuel :

33 Switch est une instruction qui peut dans certains cas remplacer une srie de if ... else. Cette instruction est utilise lorsque l'on a un grand nombre de cas diffrents.

SIMONJOLIET 55\128

\2010

CENTRE TECHNIQUE DU PAPIER

\ FIGURE IV.3.4-5 Anciennes ressources utilises pour slectionner les contrles utilisateurs

Note : le deuxime et le quatrime lment ne seront plus utiliss terme. En effet la flche de gauche est un vestige de lancien mode continu, et le bouton daide nest plus associ au fichier daide de MorFi. Ces lments seront bien videmment remplacs afin dtre cohrent avec laspect que nous voulons offrir au logiciel. Voici le nouveau visuel des lments Onglets . Cet lment est une cration librement inspire des onglets de la suite bureautique Microsoft Office 2010.

\ FIGURE IV.3.4-6 Les nouveaux onglets, slectionns et non-slectionns

Nous lavons vu prcdemment, la police par dfaut utilise lors de la cration de formulaires, non lis au systme dexploitation est MS Sans Serif. Sil est ais de remplacer celle-ci dans les formulaires, il en est tout autre dans le cas de la fentre principale : celle-ci est en effet exclue de lditeur de ressources, la fentre principale tant gre directement par le code. Par consquent, modifier un lment signifie modifier le code. Aucune aide graphique ne vient simplifier la tche comme cest le cas dans les botes de dialogues. Il est ais de modifier la police dun lment textuel plac sur la fentre principale affiche par la classique fonction TextOut34. Ce nest plus le cas lorsque le texte est envoy sous forme dun message de type SetDlgItemText35. Il faut alors envoyer tous les contrles affichant potentiellement du texte la rception de ce message, un WM_SETFONT36, avec en argument le contrle et la police. La police doit tre une HFONT initialise via un CreateFont(). Le problme est que cette fonction ne peut tre excute que lorsque ces fentres sont cres, elle naurait bien entendu pas deffet avant. Mais les contrles ne sont pas tous initialiss en mme temps, ce qui pose un problme lors de la recherche du meilleur emplacement pour modifier les polices des fentres. Dans la solution propose, ces initialiseurs sont placs dans le fichier create.c, juste aprs les crations des fentres. Il en rsulte un changement visible de la police louverture du logiciel.

La fonction TextOut crit une chane de caractres l'emplacement spcifi, en utilisant la police actuellement slectionne, la couleur de fond, et la couleur du texte. 35 La fonction SetDlgItemText modifie le titre ou le texte d'un contrle dans une bote de dialogue. 36 Le message WM_SETFONT dfinit la police qu'un contrle doit utiliser lors de ldition dun texte.

34

56\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ IV

CENTRE TECHNIQUE DU PAPIER

\ IV.3.5.

Cration dun nouveau logotype

Afin de redfinir le visuel du logiciel, une maquette prsentant le rsultat de ces recherches a t prsente aux diffrents intresss au projet, ainsi quau service Communication du CTP. Ceci de dterminer le modle remportant le plus de suffrages. Une telle planche est jointe en annexe \ VIII.11 Planche de proposition de logotypes (page 112). Cette planche illustre le second niveau de rflexion concernant le nouveau logotype : les lments textuels ont t dfinis comme indiqu par la suite. Le nouveau logotype est le fruit dune recherche faisant appel plusieurs intervenants : TechPap, les membres de lquipe Capteurs, certains membres dInTechFibres (pour dterminer la meilleure reprsentation dune fibre stylise) et surtout le service Communication. Il est en effet question dinclure le projet dans la dmarche initie par ce service, savoir lutilisation de la charte graphique. Ce projet est donc une premire pour le centre : MorFi devenant ainsi le premier logiciel contraindre son interface cette charte. Il deviendra donc de fait la rfrence visuelle des futurs produits logiciels du CTP ; lenjeu est de taille ! Llment de base, partir duquel des sous-lments pourront tre dfinis, est sans conteste ce nouveau logotype. Aprs rflexion, les maquettes mettent laccent sur laspect fibre , ainsi que sur la lettre grecque (phi), pour fibre et MorFi . Les logotypes ont t dessins laide de loutil de dessin vectoriel Inkscape . Suite une dcision collective, le logotype suivant a t choisi pour MorFi :

\ FIGURE IV.3.5-1 Le nouveau logotype du systme MorFi

Ce logotype a t redessin tout en sinspirant des lments de la charte graphique, mais aussi des logotypes du CTP, de TechPap, dInTechFibres ou encore de TekLiCell. Le choix de cette standardisation est motiv par un visuel directement reconnaissable. Les lettres Mor sont de couleur grise normalise dans la charte graphique du CTP, donc en palette Pantone par llment Cool Gray 7 C (100%). Les lettres Fi ont dlibrment t colores en rouge normalis CTP, Pantone 485C (100%), afin de contraster les mots Morphologiques et Fibres . Pour quilibrer le reste du logotype, deux fibres stylises ont t rajoutes gauche du M . Le centre de gravit est donc ramen au centre du texte, sur le o de Morfi. Les deux fibres, la fibre suprieure en rouge normalis Pantone 485C (100%), la fibre infrieure en orange normalis Pantone 717C (100%), doivent montrer flexibilit et mouvement. Il a donc t dcid de crer de larges courbes grce un lment graphique de type plume . Celles-ci soulignent les trois premires lettres. Les deux dernires lettres Fi sen passent, puisquelles sont des entits en soit. Le soulignement de celles-ci alourdirait le graphisme. Les courbes et leurs terminaisons, dans la partie basse de limage sont alignes sur un mme plan horizontal. (CTP, 2007) Une remarque cependant, de la part de professionnel de lanalyse des fibres (dInTechFibres) : les terminaisons ne sont pas reprsentatives des fibres classiques. Le logotype reprsenterait plus vraisemblablement des fibres dites coupes . Cest un dtail. Mais il apparat que remplacer ces

SIMONJOLIET 57\128

\2010

CENTRE TECHNIQUE DU PAPIER

terminaisons obliques par des pointes, rendent ces fibres stylises plus agressives et moins flexibles sur le plan graphique : cette vision na donc pas t retenue. Dans la mesure o il sagit justement dlments styliss, prendre quelques liberts par rapport la ralit nest pas vraiment rprhensible. A partir de ce nouveau logotype, il est possible de raliser dautres lments, tels que : Le logotype affich dans le ruban ; celui-ci possde en effet un fond particulier afin de sinclure dans la structure graphique dj existante du ruban (deux autres lments de ce type ont ts conus, respectivement aux couleurs du CTP et de TechPap) :

\ FIGURE IV.3.5-2 Logotype du ruban

\ FIGURE IV.3.5-3 Nouveau splash screen

Les icnes ont ainsi t recres : Comme indiqu dans le chapitre \ IV.3.3 Redfinition des formulaires (page 52), un lment de type Ruban sera ajout aux formulaires, afin de donner une identit graphique ces derniers, tout en confrant une relle identit graphique en phase avec le reste du logiciel.

\ FIGURE IV.3.5-4 Le ruban intgr aux formulaires

Dans la pratique, cet lment sera plac dans la partie suprieure du formulaire via lutilisation dun Picture Control tronqu, pour sadapter la taille du formulaire courant. Dans lexemple ci-dessus, nous pouvons voir cette application au sein du formulaire PASSWORDDLGBOX. Cet ajout renforce indniablement lidentit graphique du logiciel MorFi. \ IV.3.6. Cration dun fichier de configuration

Auparavant tous les lments graphiques qui composaient la barre de menu taient cods en dur dans le programme. Ce choix est comprhensible mais critiquable. En effet plusieurs fichiers interviennent lorsquil sagit du dessin dlments graphiques. Citons par exemple Create.c, PrincWnd.c, GraphicWnd.c, etc. Afin de ne pas alourdir lexcution du programme, les positions de ces lments nont pas t places dans des variables globales, ce qui est une bonne chose. Le problme est que la fonction de cration place les lments nimporte o, puis la fonction PrincWnd.c ou GraphicWnd.c va les placer aux bonnes coordonnes. Cette mthode est certes dynamique puisquelle autorise ainsi le redimensionnement de la fentre. Elle est en revanche assez lourde puisque certaines informations peuvent tre redondantes. En effet les mmes coordonnes peuvent tre rptes lors de la cration et lors de lappel dune fentre,

58\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ IV

CENTRE TECHNIQUE DU PAPIER

dun bouton ou dune image. Cest un problme que nous allons rgler une grce lintroduction dun fichier de configuration communment appel *.ini. MorFi utilise dj plusieurs fichiers de configuration : certains crypts, les *.cfg37, et dautres en clair, les *.ini. Nous allons donc crer dans le dossier /MorFi/Config, un nouveau fichier de configuration nomm Interface.ini. Ce fichier de configuration stockera donc tous les lments relatifs linterface du logiciel MorFi : les coordonnes des lments, les couleurs ou les chemins relatifs des logotypes. Un lment est entendu comme une bote regroupant plusieurs coordonnes. Celles-ci seront calcules dynamiquement, en fonction des coordonnes dappel. De ce fait, en thorie, les lments sont, non seulement positionnables nimporte o dans la fentre graphique, mais ils conservent galement les places propres leur bote , en interne. La syntaxe du fichier *.ini est telle, quau sein dune section, est dclar un paramtre (aussi appel cl), qui lon associe une valeur. Observons par exemple les caractristiques de la bote Rfrences : Fichier ini
;Reference box [References] X_box=574 Y_box=3 L_box=209 H_box=40

Rle Commentaire Dclaration de la section Reference La coordonne haute en X vaut 574 La coordonne haute en Y vaut 3 La largeur de la boite est de 209 La hauteur de la boite est de 40

Note : les informations, commentaires ou autres, sont, dans ces fichiers de configuration, rdigs exclusivement en anglais par souci de portabilit. De telles informations sont rptes pour chaque bote et pour toutes les autres valeurs utiles. Elles doivent tre prsent intgres dans le programme, tout endroit o elles seraient utiles. Lire et crire dans un fichier *.ini se fait grce deux fonctions prsentes dans header Winbase.h, inclues doffice lors de lutilisation de la librairie Window.h. Ces deux fonctions sont respectivement GetPrivateProfileString et WritePrivateProfileString. Il ny a pas ici dintrt utiliser la fonctionnalit dcriture (elle sera utilise dautres endroits du programme). Voici les paramtres utiliss par la fonction de lecture :
DWORD WINAPI GetPrivateProfileString( __in LPCTSTR lpAppName, __in LPCTSTR lpKeyName, __in LPCTSTR lpDefault, __out LPTSTR lpReturnedString, __in DWORD nSize, __in LPCTSTR lpFileName);

lpAppName [Entre] lpKeyName [Entre] lpDefault [Entre] lpReturnedString [Sortie] nSize [Entre] lpFileName [Entre]

: Le nom de la section (Chane de caractres) : Le nom du paramtre (Chane de caractres) : La valeur par dfaut (Chane de caractres) : Le pointeur de la chane de caractre retourner (Pointeur) : La taille de la chane de caractres (Entier) : Le nom du fichier de configuration (Microsoft, 2010)

Pour de plus amples informations, voir annexe \ VIII.7 Structure du fichier dinterface (page 105).

37 Extension de fichier CFG est le plus souvent associ un fichier de configuration gnrique, et sont souvent utiliss pour stocker les paramtres et prfrences.

SIMONJOLIET 59\128

\2010

CENTRE TECHNIQUE DU PAPIER

\ IV.3.6.1.

Donnes associes au Ruban

Afin dexploiter au mieux cette fonction, les rsultats retourns par celle-ci seront placs, dans le cas des valeurs de coordonnes du ruban, dans une structure38. Cette structure est initialise par une fonction externe, au sein du fichier create.c. La structure se nomme IntFce_G (pour InterFace en variable Globale). Cette fonction est accessible dans tout le projet, pour peu que le header specif.h soit inclu la source. Voir annexe \ VIII.17.1 Structure de donnes du fichier dinterface (page 118) pour voir le code source. Comme nous pouvons le constater, la structure contient elle-mme une sous-structure. Ainsi lorsquun ELEMENT est dclar, il contient doffice les entiers X , Y , L et H (soit une coordonne en X, une coordonne en Y, une largeur L et une hauteur H). Cela rend la lecture et la programmation plus facile. Si lon veut initialiser un lment spcifique, lIDE nous guide afin de choisir llment adapt. Obtenir la coordonne X dun lment Rfrence se fait de la manire suivante : Ruban.Reference.X Mais la fonction nous retourne une chane de caractre, lorsque nous avons besoin dun entier. Il faut donc caster39 cette chane ; il existe une fonction ddie en C, la fonction atoi(). Dans la fonction _ChargeElementsInterface(void), voici donc la requte permettant de placer la valeur du paramtre Y_boite de la section Rfrence dans le fichier *.ini, dans la variable associe au sein de la structure :
GetPrivateProfileString(TEXT("References"),TEXT("X_box"),TEXT("1"),outString,10,TEXT(FileInterface)); IntFce_G.Reference.X=atoi(outString); GetPrivateProfileString(TEXT("References"),TEXT("Y_box"),TEXT("1"),outString,10,TEXT(FileInterface)); IntFce_G.Reference.Y=atoi(outString); GetPrivateProfileString(TEXT("References"),TEXT("L_box"),TEXT("1"),outString,10,TEXT(FileInterface)); IntFce_G.Reference.L=atoi(outString); GetPrivateProfileString(TEXT("References"),TEXT("H_box"),TEXT("1"),outString,10,TEXT(FileInterface)); IntFce_G.Reference.H=atoi(outString);

Extrait du fichier GraphWnd.c \ IV.3.6.2. Donnes associes aux fonctions Chart Director

Une des exigences de TechPap est de rendre paramtrable les couleurs des graphiques gnrs par Chart Director. Sil nest pas prvu de rendre modifiable cette donne par lutilisateur, il est ncessaire de passer par un fichier de configuration. Notre *.ini de gestion dinterface sadapte parfaitement cette application. Voici donc la section du fichier associ au stockage des couleurs des graphiques :
; The values are in decimal ; for eg.: Red = 16711680 (0xFF0000) ; Green = 65280 (0x00FF00) ; Blue = 255 (0x0000FF) ; ;Default value : 13970206 for all the fields [Colors] Header_Color=13970206 Bar_Color =13970206 Curve_Color =13970206

Extrait du fichier Interface.ini

Une structure de donnes est une structure logique destine contenir des donnes, afin de leur donner une organisation permettant de simplifier leur traitement. Une structure de donnes implmente concrtement un type abstrait. 39 Caster est le fait de convertir une valeur d'un type (source) dans un autre (cible). Il sagit dune conversion de type.

38

60\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ IV

CENTRE TECHNIQUE DU PAPIER

On enregistre dans cette section les couleurs des enttes des lments Chart Director (tableaux, matrices, histogrammes et courbes), ainsi que les couleurs des barres des histogrammes et des lignes des courbes (la couleur par dfaut est le rouge normalis par la charte graphique du CTP). Reste crer une fonction ralisant la requte dans le fichier *.ini pour ces couleurs. Voici lexemple et sa dclaration :

GetPrivateProfileString(TEXT("Graphic_Colors"),TEXT("Header_Color"),TEXT("13970206"),outString,30,TEXT( FileInterface)); Intfce_G.couleurHeader=atoi(outBigString); }

Extrait du fichier FonctionsChartDirector.c Nous noterons quici, la valeur par dfaut est fixe 13970206. Cest en effet la valeur dcimale du rouge CTP dfinit par la charte graphique. Son indication correspondante est Pantone 485C (100%), soit en hexadcimal 16D52B1E et par conversion dcimale, 1013970206. \ IV.3.7. Gnration automatique des fichiers de configuration

Au cours de la vie dun logiciel, il arrive que les fichiers soient, suite une mauvaise manipulation dun utilisateur, supprims, modifis ou renomms. La panne peut alors se rvler difficile diagnostiquer et dans le pire des cas, il pourrait tre ncessaire de refournir le fichier manquant au client. Pour remdier ce problme, les logiciels dvelopps rcemment par le CTP sont capables de rgnrer automatiquement les fichiers de configuration manquants. Il est donc prvu dintgrer une telle fonction MorFi. Lavantage est double : le logiciel est capable dauto-diagnostiquer la perte dune ou plusieurs de ses dpendances et de les rgnrer la vole au dmarrage le cas chant. Et dans le cas du premier dmarrage du logiciel, il ne sera plus ncessaire de livrer MorFi avec ses fichiers de configuration ; le logiciel les gnrera automatiquement avec les rglages par dfaut et de manire transparente et instantane. Pour raliser cette fonction, il est prvu dajouter un nouveau fichier source accompagn de son header au programme principal. Ces fichiers portent les noms RegenConfig, respectivement *.c et *.h. Le header sera inclu la source Specif.c. En effet celle-ci est lance au dbut du programme, le moment est idal pour vrifier la prsence des fichiers cls. Notre fonction se nommera PrincRegen(). Elle ne prend aucun paramtre dentre (void), mais retourne un entier (int) qui reprsente le nombre de fichiers quelle aura crs. Voici le code source associ cette fonction dans le cas du fichier dinterface que nous avons mis en place lors du chapitre prcdent, \ IV.3.6 Cration dun fichier de configuration (page 58) :
if((OuvertureErreur=fopen_s(&PointeurFichier, FileInterface,"r"))!=0) { InterfaceRegen(FileInterface); Modifications++;} Else { fclose(PointeurFichier);}

Nous testons tout dabord la prsence du fichier point par FileInterface (cest une variable globale cre par Specif.c et dfinie par Config.c ; elle est donc accessible en incluant le header Specif.h ). Pour tester la prsence, nous vrifions la valeur que retourne fopen_s40 lors dune lecture sur ce fichier. Sil nexiste pas, la valeur retourne ne sera pas nulle. Dans ce cas, nous faisons appel la fonction de rgnration de cet lment, puis nous incrmentons la variable Modifications qui sera retourne au contexte appelant, lui permettant ainsi dobtenir le nombre de fichiers rgnrs par la fonction. Il convient de recrer le fichier Interface.ini point par FileInterface. Il existe pour ce faire deux mthodes. La premire consiste utiliser la fonction WritePrivateProfileString(), qui prsente lavantage dtre
40

La fonction fopen_s permet douvrir un fichier de manire plus sre que fopen. En effet, celle-ci ne retourne plus de pointeur de fichier (FILE *), celui-ci doit prsent tre pass en paramtre.

SIMONJOLIET 61\128

\2010

CENTRE TECHNIQUE DU PAPIER

bien adapte aux fichiers de configuration, mais qui ne permet pas dinsrer de commentaires ou de crer dautres fichiers que nos *.ini. Cette solution est donc carte au profit de lautre : lutilisation de classiques fprintf41 sur le pointeur du fichier ouvert par un fopen_s. Voici un extrait de la mthode :
//Si le fichier n'existe pas, alors il faut le crer fopen_s(&PointeurFichier, NomFichier, "w"); //On rcrit le fichier de configuration fprintf(PointeurFichier,";MorFi Backup self-generated file\n");

Les fichiers gnrs automatiquement possdent un entte spcifique qui leur est propre. La cration de cet entte est le rle de la fonction InscritAutoGenere(). Elle prend en paramtre une chane de caractres, le nom du fichier de configuration courant. Voici lextrait de lentte du fichier Interface.ini gnr selon cette mthode :
;MorFi Backup self-generated file ;Wednesday 18 August 2010 - 14:50:35. ;________|.\Config\Interface.ini|________

Note : la date est obtenue grce aux nouvelle fonctions scurises, telles que prconises par linterface de dveloppement. Voici donc la syntaxe adopte :
//Dclaration dune structure de Date tm struct tm DateLocale; //Dfinition de la variable globale d'erreur errno_t LocaltimeErreur; //Dfinition du buffer stockant la chane afficher dans le fichier de configuration char ChaneDateHeure[256]; //Rcupration de l'heure actuelle (horodatage) time_t timestamp = time(NULL); //Convertion du timestamp en heure locale LocaltimeErreur=localtime_s(&DateLocale, &timestamp); //Copie de la date et de l'heure dans le buffer strftime(ChaneDateHeure, sizeof(ChaneDateHeure), "%A %d %B %Y - %X.", &DateLocale); [...] fprintf(PointeurFichier,";%s\n", ChaneDateHeure);

Une fois cet entte ajout, la sous-fonction InscritAutoGenere() repasse la main InterfaceRegen(). Cette fonction a pour but unique de rgnrer le fichier dinterface (chaque fichier gnrer doit possder sa propre fonction). La mthode est trs simple : nous r ouvrons le fichier dsign par le pointeur de fichier dans lequel lentte a t crit mais cette fois en mode insertion ( a ) et non en mode criture ( w ) comme prcdemment. Il suffit juste dajouter la suite dans le fichier, ligne par ligne, la configuration par le biais de fprintf. Nous refermons le fichier par un fclose42. \ IV.3.8. Ajout de nouvelles fonctions au ruban

Dans la version courante de MorFi (en mode laboratoire), il nexiste que quatre contrles associs la barre de menu : le lancement dune mesure par le Carrousel, dune simple mesure, dune impression, ou de laide. Aprs avoir sond les utilisateurs et les responsables de TechPap, il apparait que laide nest pas utilise ; un mode demploi papier est fourni et de fait, le fichier daide apparat comme inutile. Cette fonction sera donc retire. Lutilisation dun ruban permet dajouter des contrles directement accessibles pour lutilisateur, sans passer par les menus. Avant tout, prenons en considration le nombre maximum de commandes de MorFi, dfini 6 :

41 42

La fonction fprintf() permet dcrire une chane formate dans un flux. La fonction fclose() permet de fermer un fichier dont le pointeur est pass en paramtre.

62\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ IV

CENTRE TECHNIQUE DU PAPIER

#define _k_NB_COMMANDES 6

Extrait du fichier PrincWnd.c , ligne 58 Certains contrles seront supprims, dautres ajouts. Ceux-ci sont stocks dans trois tableaux de _k_NB_COMMANDES lments. Comme nous lillustrons par le tableau des identifiants ci-dessous :
static int TabIdf [_k_NB_COMMANDES] = {ID_PRINT ,ID_SYNTHESE,ID_SAUVE ,ID_DEFAUT ,ID_OUVRE ,ID_ABOUT};

Extrait du fichier PrincWnd.c , ligne 87 Nous rajouterons dans ce tableau les identifiants ID_SYNTH, ID_SAUVE, ID_OUVRE et ID_ABOUT, qui sont respectivement : les contrles de synthse, de sauvegarde, douverture et dinformations. Des boutons associs sont crs, puis intgrs aux ressources du projet. Les identifiants de ces boutons sont stocks dans les deux autres tableaux de _k_NB_COMMANDES lments. Ils permettent de stocker les identifiants des bitmaps activs et dsactivs, comme nous le verrons. Ils seront appels au moment de leur cration, de manire dynamique par le programme au cours de lvnement WM_DRAWITEM que nous avons vu prcdemment au cours du chapitre \ IV.3.4 Le Ruban (page 52).

Contrles dimpression, non-activ et activ (ID_IMPRIME) Contrles douverture, non-activ et activ (ID_OUVRE) Contrles denregistrement, non-activ et activ (ID_SAUVE) Contrles de synthse, non-activ et activ (ID_SYNTH)

\ FIGURE IV.3.8-1 Nouvelles fonctions du ruban

Un problme se pose : lorigine les onglets et les boutons taient des lments bitmap de mme taille, en pixels, de 30 de largeur et de 24 de hauteur. Ce nest plus le cas actuellement puisquun contrle possde une taille de 4143 pixels, et quun onglet, ancienne page graphique, possde lui une taille de 16024 pixels. Afin de grer ces diffrences, ils convient didentifier llment charg par la fonction daffichage, au contraire de ce qui tait effectu auparavant. La condition suivante a donc t implante dans la fonction daffichage des lments du menu :
if(testInitOnglets) StretchBlt(lpdis->hDC,lpdis->rcItem.left,lpdis->rcItem.top,lpdis->rcItem.right-lpdis>rcItem.left,lpdis->rcItem.bottom-lpdis>rcItem.top,hdcMem,0,0,Ruban.Onglets.L,Ruban.Onglets.H,SRCCOPY); else StretchBlt(lpdis->hDC,lpdis->rcItem.left,lpdis->rcItem.top,lpdis->rcItem.right - lpdis>rcItem.left,lpdis->rcItem.bottom - lpdis->rcItem.top,hdcMem,0,0,40,43,SRCCOPY);

Nous noterons dans le cas prsent quune variable boolenne43, nomme testInitOnglets, dsigne pour chaque lment affich si celui-ci est un onglet ou un contrle. Le cas chant, les coordonnes se trouvent modifies par les valeurs charges depuis le fichier de configuration que nous avons voquer.

43

Un boolen en logique et en programmation informatique est un type de variable deux tats.

SIMONJOLIET 63\128

\2010

CENTRE TECHNIQUE DU PAPIER

\ IV.3.9.

Ajout dun logotype externe

Suite la runion de pr-production, il fut entendu que lcran principal contiendrait un lment graphique. Celui-ci pointerait vers une ressource extrieure, autorisant ainsi la possibilit de crer des versions de MorFi aux couleurs du CTP, de TechPap, ou de nimporte quelle entit finalement. Il suffirait alors de modifier limage ./Config/Logo.bmp pour changer rapidement la distribution. Une telle fonction se ralise simplement. Nous commenons par dclarer un lment, possdant lidentifiant ID_ABOUT :
CreateWindow("Static","",WS_VISIBLE|SS_BITMAP|WS_CHILD,1000,3,50,43,hWndPrinc_G,(HMENU)ID_ABOUT,hInst_G ,NULL);

Puis nous chargeons la ressource externe, Logo.bmp. Le chemin de cet lment est indiqu dans le fichier Interface.ini. Cet lment est charg dans la structure sous le nom CheminLogo ; il est donc accessible en appelant la variable Ruban.CheminLogo. Dclaration de la variable au sein de la structure :
char CheminLogo[90];

Chargement de la variable au sein de la fonction dinitialisation incluse dans le fichier Create.c :


GetPrivateProfileString(TEXT("Window"),TEXT("Path_Logo"),TEXT(".\\Config\\Echec.BMP"),outBigString,90,T EXT(FileInterface)); strcpy_s(Intfce_G.cheminLogoFenetre,sizeof(outBigString),outBigString);

Note : conformment aux nouvelles rgles imposes pour le dveloppement de MorFi, linstruction permettant de copier une chane de caractres dune variable vers une autre variable est strcpy_s et non strcpy.

\ FIGURE IV.3.9-1 Echec de chargement

Par dfaut, si aucune valeur nest retourne par la fonction, le logotype charg sera ./Config/Logo.bmp. Si une valeur existe, elle pointera llment afficher en haut droite (position prvue par dfaut) de la fentre principale de MorFi, dans le ruban. Si aucune entre nexiste dans le fichier de configuration, cest llment ci-contre Echec qui sera alors affich.

Note : cette fois, il nest pas ncessaire de convertir la chane de caractres. En effet, le type attendu tant dj format, il suffit de copier le contenu de la chane outPath ladresse du pointeur du chemin de logo, soit (*PointeurRuban).CheminLogo. Nous envoyons ensuite la ressource pointe par cette variable la fentre ID_ABOUT via un message STM_SETIMAGE.
//Chargement du logo hBitmapLogo = (HBITMAP)LoadImage(NULL, IntFce_G.CheminLogo, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE ); //Envoi de l'image au fond du ruban SendMessage(GetDlgItem(hWndPrinc_G,ID_ABOUT),STM_SETIMAGE,(WPARAM)IMAGE_BITMAP,(LPARAM)hBitmapLogo);

64\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ IV

CENTRE TECHNIQUE DU PAPIER

\ IV.3.10.

Nettoyage du code source

Ag de plus de 14 ans parfois, le code source de MorFi nest pas toujours vident saisir. Comme expliqu prcdemment, les intervenants auront ts nombreux durant la vie du logiciel, amenant ainsi invitablement des fonctions obsoltes, inutilises, ainsi que du code mort44. Lenjeu est double : dune part amliorer la lisibilit et la portabilit du code, tout en rduisant de fait le poids de lexcutable final. Dautre part, lenjeu consiste viter certains problmes dexcution, rencontrs de manire anecdotique par certains clients ayant modifi leurs paramtres systmes. Ce genre de problme est li uniquement certaines branches aujourdhui obsoltes du code, savoir une ancienne version du mode continu du logiciel. En effet auparavant, MorFi comportait ces deux modes de fonctionnement distincts, alourdissant alors de manire significative le programme. Aussi il a t entreprit en 2004 de rcrire le fonctionnement en mode continu du logiciel. Cette tche fut ralise par Monsieur Pascal Borel, qui travaillera paralllement sur llaboration de MorFi v7.13.02 et 7.14. A prsent le mode continu est une succession de mesures en mode laboratoire ; un changement dans ce mode est donc rpercut toutes les distributions de MorFi. Cette avanc fut significative ! Un problme se pose : le code recle en effet certaines absurdits. Il nexiste plus dautre mode de fonctionnement que le mode continu, mais il existe pourtant encore des lignes de ce type au sein du code source :
if(!bConfigModeContinu_G)

Une telle instruction na donc plus raison dtre, linstar finalement de tous les tests raliss sur ce boolen. Supprimer les lments situs en aval dune telle condition obsolte signifierait la reconsidration dun tiers du code. En ralit le postulat dun tiers du code source inutilis sest rvl tre sous-valu : cest finalement 43% de ce code qui sera purement et simplement supprim du projet et donc du nouvel excutable ( partir de la version v7.14). Cette tape conditionne la mise en commun des deux codes sources. Nous verrons cela dans le chapitre \ IV.3.19 Fusion des codes sources (page 74). \ IV.3.11. Gestion de limpression

La prise en charge de limpression est dj effective au sein de MorFi. Force est de constater qu lexprience, ce mode de fonctionnement nest pas le plus soign du logiciel. Puisque les lments graphiques ont pour la plupart t modifis, il est ncessaire de sassurer que limpression fonctionne toujours avec cette nouvelle, puis denvisager lamlioration globale de celle-ci. Tout dabord linstar de la fonction daffichage, il peut paratre judicieux de dsactiver les bordures des lments. En effet les nouveaux lments (notamment ceux gnrs par Chart Director) sont des images Bitmap. Un cadre est superflu dans notre version laspect moderne. Il savre ensuite que la qualit dun lment imprim laisse dsirer. Avant daller plus loin, nous devons reconsidrer le fonctionnement de loption dimpression de MorFi. Comme nous lavons vu, lors de laffichage sur un support, nous utilisons un Handle de fentre (hWnd45) et un Handle de contexte (hDC46). Un hDC peut-tre point vers nimporte quel dispositif de sortie, comme une imprimante. Il suffit donc de crer un contexte daffichage via la fonction CreateDC (avec en paramtres le driver, le priphrique, la destination de sortie et une structure de type DEVMODE comportant les spcificits
Code mort, de langlais dead code, est un code que le parcours d'un programme n'atteindra jamais. Il signale donc une erreur de conception. 45 Un lment de type hWnd (handle Window) est un pointeur de fentre. 46 Un lment de type hDC (handle of Device Context) est un pointeur de de contexte daffichage (comme une image).
44

SIMONJOLIET 65\128

\2010

CENTRE TECHNIQUE DU PAPIER

inhrentes linitialisation du priphrique). Enfin la fonction SetWindowExtEx initialise la rsolution applique sur le priphrique. La voici dans son utilisation :
SetWindowExtEx(hImprDC,1000,1000,NULL);

Extrait de imprime.c Note : nous utilisons ici un Handle de contexte (hImprDC) gnr bien entendu avec la fonction CreateDC que nous avons vue. La rsolution est de 10001000 pixels. Elle est ici trop faible pour une impression : si cest idal pour du texte, ce nest plus le cas pour nos lments bitmap. Cette rsolution sera donc augmente. Il existe une fonction permettant de rcuprer la taille de la fentre dimpression (celle-ci est place dans une structure de type POINT, contenant les coordonnes x et y). Ainsi la zone dimpression sera fonction de cette rsolution (avec un rapport 1/4), afin dautoriser limpression en paysage comme lorigine, mais aussi en portrait, ce qui est une nouveaut. Dans le code, une variable (boolenne) est frquemment utilise. Il sagit dimpr. Ce drapeau permet dafficher certains objets diffremment sils sont imprims ou sils sont affichs lcran. Dans notre cas, nous dcidons que certains lments nont pas besoin dtre imprims, pour des raisons de lisibilit et dconomies. Par exemple, lors dune impression, le fond dun lment Chart Director ne sera pas un dgrad de gris, mais uniformment blanc si lutilisateur le dsire. Lombrage sera dsactiv et llment retrouvera sa bordure noire. Cet lment doit pouvoir tre contrlable lors de limpression et par un fichier de configuration *.ini. Nous rajoutons donc dans le formulaire dimpression une Check Box47 li un boolen. Lors de laffichage du formulaire, nous testerons tout dabord la valeur du boolen. En effet la Check Box indique par dfaut si le fond est imprimer ou non ; cest le rle de la cl Background au sein du fichier de configuration Interface.ini. Par souci dconomie, il est dcid que le fond sera dsactiv par dfaut pour une impression sur papier. Pour une impression sur format lectronique (de type *.pdf48), il est prfrable dafficher ce fond. Il est ainsi recommand dinstaller par dfaut limprimante virtuelle PDF Creator sur les machine quipant MorFi, afin dinciter la rduction des impressions papier lorsque cela est possible.
GetPrivateProfileString(TEXT("Printing"),TEXT("Background"),TEXT("0"),outString,2,TEXT(FileInterface)); if ((BOOL)atoi(outString)) SendDlgItemMessage(hDlg, IDC_BCKGPRINT, BM_SETCHECK, BST_CHECKED, 0);

Extrait de imprime.c Le fond dun lment est activ si et seulement si : - Limpression est inactive (!impr) OU (||) - Limpression est active (impr) ET (&&) le drapeau dimpression est lev (_GetImprimeFond())
if((!impr)||((impr)&&(_GetImprimeFond()))) { c->setBackground(c->linearGradientColor(0, 0, 0, resY/2, BCG_HAUT_CHARTDIR,BCG_BAS_CHARTDIR));}

Voir en Annexes \ VIII.15 Une impression sous MorFi 8.0 (page 116), le rsultat de limpression dun onglet. A titre de comparaison, une impression ralise avec la version antrieure du logiciel est prsente en \ VIII.14 Une impression sous MorFi 7.13.00 (page 115). Note : le nouveau logotype de MorFi a t ajout en haut, gauche dans lentte dimpression. Le numro de srie de MorFi a pour sa part t dplac en bas gauche de la page.

47 48

Une check Box est un composant dinterfaces graphiques permettant l'utilisateur d'indiquer des choix. Le Portable Document Format (pdf) est un langage de description de pages d'impression cr par Adobe Systems.

66\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ IV

CENTRE TECHNIQUE DU PAPIER

\ IV.3.12.

Gestion de llment vide

Suite une demande de TechPap, il est dcid quune fentre vide pourra se faire attribuer un bitmap externe. Aujourdhui, une entreprise certifiant une qualit de produit par une copie dcran de MorFi na pas la possibilit, du moins pas simplement, de leffectuer ses couleurs. Lenjeu est donc de permettre un client de raliser de manire lgante sa certification. Cela peut tre fait par laffichage dun bitmap point par un fichier *.ini sur un lment vide. Nous recherchons donc lemplacement o est dtect un lment vide. Celui-ci se trouve lors du Switch sur le type dobjet. Plusieurs choses sont alors savoir : Lorsquune vido prcde un lment vide, celle-ci est tendue sur deux fentres. Dans ce cas, llment vide ne doit pas contenir dimage. Les emplacements [0] et [3] ne peuvent jamais tre llment suivant une vido, puisque situs en extrmit verticale haute. Voici comment ces conditions se traduisent en code :

case GWND_k_TYPOBJ_VIDE: if (impr){ x1 = 100; y1 = 200; x2 = 900; y2 = 500;} EffaceZoneEcran(hDC,x1,y1,x2,y2,BLANC); if(((GWND_k_TYPOBJ_VIDEO != pppnTabVisu_G[nPageCour_G][fen-1][0]))||(((fen==0)&&(fen==3)))) AfficheLogoElementVide(hDC,x1,y1,x2,y2,fen,impr); break;

Extrait de Graphwnd.c Voir la fonction AfficheLogoElementVide(), jointe en annexes \ VIII.17.2 Fonction de Gestion de llment vide (page 118) Le bitmap est affich par une fonction BitBLT. Limage nest donc pas redimensionne la taille de la fentre. Par contre elle est toujours place au centre (de manire dynamique). Cest pourquoi nous rcuprons la taille du HBitmap charg en mmoire ; celle-ci modifiant effectivement les coordonnes du point daffichage. Lors de limpression, il est ncessaire dappeler cette fonction, en passant cette fois logiquement en paramtre, le contexte dimpression au lieu du contexte de la fentre. \ IV.3.13. Externalisation de la localisation

Comme nous lavons vu prcdemment, MorFi existe en 3 langues, langlais, lallemand et bien videmment le franais. Les lments de type texte sont placs dans une StringTable au sein des ressources. Ce type de fonctionnement est problmatique puisque les changements sur un fichier de ressource ne sont pas rpercuts sur les deux autres. Pour pallier ce problme, tous les lments textuels propres une localisation seront externaliss. Une entre est ajoute au fichier Interface.ini, permettant de slectionner la langue souhaite (Franais, English ou Deutsch dans la langue naturelle du fichier, pointant respectivement vers les ressources correspondantes). Une question se pose alors : quelle structure de donnes utiliser ? Voici comment un lment est actuellement stock dans une StringTable :
ID_T_CONF1 "Voulez-vous vraiment arrter l'analyse?"

Extrait de MorFi.rc Une chaine de caractre est dsigne par une cl. Cette cl est dsigne par un identifiant au sein du code.

SIMONJOLIET 67\128

\2010

CENTRE TECHNIQUE DU PAPIER

#define ID_T_CONF1

5122

Extrait de Const.h Il est donc ncessaire de consigner trois lments par lment de texte : Le nom de la chane de caractres. Lidentifiant de la chane de caractres. La chane de caractres.

Il nest donc pas envisageable de stocker ces lments dans un fichier *.ini. En effet il faut opter pour un fichier intgrant au moins une structure de rtention de donnes, mme de base. Le format XML semblerait le mieux indiqu pour cette tche. Il na malheureusement pas remport les suffrages. Nous nous tournerons donc vers le format *.csv. Lintrt principal de ce format est sa grande souplesse : les donnes sont spares par des points-virgules, donc facilement modifiables par un simple diteur texte, mais aussi via des outils plus complets tels que Microsoft Excel ou encore un parser49 de fichier *.csv comme CSVed. La structure de stockage (T_Localisation) sera dfinie comme tant la suivante :

Voici la manire dont sera stock llment prcdent :


5122;ID_T_CONF1;Voulez-vous vraiment arrter l'analyse?

Toutes les donnes seront donc places les unes la suite des autres, lordre nayant aucune importance. Lors de linitialisation du logiciel (ou lors de la slection dune autre langue), toutes les informations contenues dans ce fichier seront lues, puis sauvegardes (seules la cl et la valeur nous intressent en lecture). Deux tableaux sont alors ncessaires : un tableau dentiers et un tableau de chanes de caractres. Avant tout nous dfinissons deux constantes, dsignant respectivement le nombre dlments de la StringTable et le nombre de caractres de la valeur.
#define ELEMENT_STRINGTABLE 2000 #define ELEMENT_VALCARACTER 210

Voici lalgorithme de la fonction chargeant les deux tableaux, nomm _ChargeStructureLocalisation(). Le code source de cette fonction est joint en annexes \ VIII.17.3.1 Chargement des tableaux (page 119).
FONCTION _ChargeStructureLocalisation, retourne un Boolen PAS DE/S TAB.CHAINE TAB.ENTIER CHAINE ENTIER DEBUT
49

Val de ELEMENT_STRINGTABLE de ELEMENT_VALCARACTER ; Idt de ELEMENT_STRINGTABLE lments ; Buffer ; numLigne = 0 ;

Un parser (ou analyseur syntaxique) est un programme informatique qui ralise la mise en vidence de la structure d'un texte, gnralement un programme informatique ou du texte crit dans une langue naturelle.

68\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ IV

CENTRE TECHNIQUE DU PAPIER

| SI | ALORS : | | TANT QUE | | | SI | | | | SI | | | | | | | | | | | | | | | | | | | FIN SI ; | | | | POUR | | | | | | | | | FIN POUR ; | | | FIN SI ; | | | | FIN TANT QUE ; | SINON | | POUR | | | | | | | | | SI | | | | | | | FIN SI ; | | | SI | | | | | | | FIN SI ; | | FIN POUR ; | | | | | FIN SI ; | FIN ;

Louverture du fichier est possible ; La fin du fichier nest pas atteinte ; La ligne comporte plus de deux caractres ; Le premier caractre est un chiffre diffrent de 0 ; Copie de xxx;...;... Idt[numLigne] ; Copie de ...;xxx;... Buffer ; Copie de ...;...;xxx Val[numLigne] ; vli 0, vli ELEMENT_VALCARACTER, incrmentation de vli Initialisation du buffer la position vli ;

Fermeture du fichier ;

vli 0, vli ELEMENT_VALCARACTER, incrmentation de vli ; Val[numLigne][0] Retour chariot ; Idt[numLigne] 0 ; La chaine comporte un "\n" Conversion en '\n' (retour chariot) ; La chaine comporte un "\t" Conversion en '\t' (tabulation) ;

Affiche message 'Erreur' ; Retourne FAUX ; Retourne VRAI ;

Pour la suite nous crons une fonction identique LoadString(), que nous nommons LoadStringLocal(). Cette fonction prendra les mmes paramtres (sans le Handle dinstance, ici inutile), mais au lieu de capturer les informations dans la StringTable, elle fera directement appel aux tableaux. Ensuite nous remplaons automatiquement (via loutil de remplacement intgr Visual Studio) toutes les occurrences de lancienne fonction, que nous remplaons par la nouvelle.
LoadString(hInst_G,ID_T_CONF1,string,90)

: Remplacement automatique des 653 occurrences (en version v7.13.00sj)


LoadStringLocal(ID_T_CONF1,string,90)

Observons le fonctionnement de LoadStringLocal(). Nous savons quil existe deux tableaux comportant tous les lments. A lappel de la fonction, nous utilisons le paramtre dentre ID_T_CONF1. Ce paramtre est dfini par la valeur 5122. Donc il faut chercher la position attribue cet lment lors du chargement des tableaux. Voici lalgorithme de la fonction LoadStringLocal(). Le code source de cette fonction est joint en annexes \ VIII.17.3.2 LoadStringLocal (page 120).
FONCTION _LoadStringLocal, retourne un Boolen ENTREE Entier inCle Entier sizeOfBuffer Chaine outVal

ENTRE/SORTIE DEBUT | | POUR | | SI | | |

vli 0, vli ELEMENT_STRINGTABLE, incrmentation de vli ; inCle = Idt[vli] Copie de Val[numLigne] outVal ;

SIMONJOLIET 69\128

\2010

CENTRE TECHNIQUE DU PAPIER

| |SINON | | | | |FIN SI ; | FIN POUR ; | FIN ;

Retourne FAUX ;

Retourne VRAI ;

Nous copions alors la chane de caractres la position pointe du tableau dans la variable string passe en paramtre la fonction, dans la limite de la taille de buffer impose (ici, 90 octets). \ IV.3.14. Rendu dynamique de la barre de menu

Concernant la localisation de la barre de menu, plusieurs fonctions sont retenir. Cela est notamment d au fait que plusieurs lments distincts cohabitent : les pop-ups et les lments de menus. Nous verrons par la suite pourquoi une telle distinction.
Un popup Un lment de menu Un popup Un lment de menu Un lment de menu Un popup Un lment de menu Un lment de menu

\ FIGURE IV.3.14-1 Illustration de principe dun menu Figure IV.1 Pour la modification dun lment du menu (ici, llment sauvegarde ) :
LoadStringLocal(ID_SAUVE,chrgStr,90); ModifyMenu(hMnu,ID_SAUVE,MF_STRING,ID_SAUVE,chrgStr);

Extrait de create.c Pour la modification dun pop-up (ici, le menu pop-up fichier ) :
LoadStringLocal(ID_MFILE,chrgStr,90); menuInfo.dwTypeData=chrgStr; SetMenuItemInfo(hMnu,0,FALSE,&menuInfo);

Extrait de create.c Contrairement aux lments du menu, les pop-ups nont pas didentifiants. Pour modifier une valeur, il est ncessaire de pointer directement la valeur dsigne par une coordonne. Dans le cas dun pop-up de sous-menu, la procdure est donc assez similaire :
LoadStringLocal(ID_MFILE,chrgStr,90); menuInfo.dwTypeData=chrgStr; SetMenuItemInfo(GetSubMenu(hMnu),0,FALSE,&menuInfo);

Extrait de create.c La fonction SetMenuItemInfo pourrait tre utilise pour tous les lments du menu, pas seulement les pop-ups. Mais la ncessit, pour modifier un lment, de connatre sa position pose problme dans le cas dune gnration dynamique. Nous ne lutiliserons donc que dans le cas des pop-ups.

70\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ IV

CENTRE TECHNIQUE DU PAPIER

Une fonction similaire est utilise, SetMenuItemBitmaps, qui permet dajouter une icne un lment du menu (dimension 1313px). Elle est donc insre en mme temps que la localisation des lments au sein de la source create.c.
Fichier

Fichier Ouvrir une mesure Sauvegarder Rapport auto Incidents Synthse Re calcul Quitter

Ouvrir une mesure Sauvegarder Imprimer Copie dcran Rapport auto Incidents Synthse Re calcul Quitter

CTRL+O CTRL+S CTRL+P CTRL+C

F9

CTRL+Q

\ FIGURE IV.3.14-2 Ancien menu Fichier

\ FIGURE IV.3.14-3 Nouveau menu Fichier

Note : les fonctionnalits dimpression et de copie taient lorigine absentes du menu fichier. Elles ont donc t ajoutes dans la nouvelle version. Il existe un autre menu, le menu contextuel lors dun clic droit sur une fentre graphique. Cet lment doit lui aussi tre localis ; lappel de ce menu seffectue au sein du fichier source graphwnd.c, dans la fonction _MenuContextuel(). Avec la mme mthode, nous le localiserons et nous lassocierons aux icnes dlments du menu. Nous ajoutons de plus trois nouvelles fonctions ce menu contextuel, Copier , Agrandir et Dplacer . Laide contextuelle, dsormais inutile, est supprime. Voir pour lexemple le chapitre \ IV.3.16 Ajout de la fonction Copier (page 72). \ IV.3.15. Ajouts de raccourcis clavier

Dans la version standard de MorFi, il existe seulement deux raccourcis claviers, CTRL+F1 et permettant lors de laffichage vido, dafficher respectivement une ou deux images. Afin de rendre le logiciel plus convivial, de nouveaux raccourcis seront ajouts ceux-ci, en respectant une logique communment admise :
CTRL+F10

F5 F6 F9 CTRL+O CTRL+S CTRL+P CTRL+T CTRL+R CTRL+M CTRL+C

: Effectuer une mesure simple : Effectuer une mesure via le carrousel : Effectuer une synthse : Ouvrir : Sauvegarder : Imprimer : Passer en mode Oprateur : Passer en mode Rgleur : Passer en mode Maintenance : Copier la zone cran

Note : les lments graphiques sont les icnes 1313px des lments du menu qui nous citions au chapitre \ IV.3.14 Rendu dynamique de la barre de menu (page 70). SIMONJOLIET 71\128

\2010

CENTRE TECHNIQUE DU PAPIER

Pour amliorer laspect pratique, ces raccourcis ont ts placs dans la barre de menu. Ils sont donc visualisables par loprateur, qui aura alors tout loisir de passer par les menus, par la barre doutils du ruban ou dutiliser le raccourci clavier. Ce fonctionnement, o chaque contrle est accessible par diffrentes mthodes, est un classique dans lutilisation des logiciels modernes. Cette mise en uvre au sein de notre application trouve alors parfaitement sa place. Dans le cas des raccourcis claviers, la mthode utilise auparavant ne sera pas rpte. Ceux-ci taient effectus par le biais de HotKeys, utiliss via la fonction RegisterHotKey(). Le gros inconvnient de cette fonction est que le message est associ directement un thread50 et ainsi il excutera le comportement associ mme si le programme na pas le focus51. Avec seulement deux raccourcis claviers, cela ntait pas dommageable. En revanche avec les nouveaux, tout change, puisque ceux-ci sont dutilisation trs courante. Si un utilisateur utilise donc la combinaison CTRL+S sur une machine excutant MorFi, le signal sera captur par le logiciel mme sil nest pas au premier plan ! Cette mthode, faisant intervenir le systme, est donc proscrire, car imprvisible et dangereuse. Voici le fonctionnement de la nouvelle mthode :
case WM_KEYDOWN: switch(wParam) { case VK_F1: VID_MenuVideo(ID_SAUVEIMA);

break;

Extrait de PrincWnd.c Comme nous le voyons, un message, WM_KEYDOWN, rcupre les touches presses par lutilisateur, si et seulement si le programme possde le focus. Dans le cas prsent, en appuyant sur F1, la fonction VID_MenuVide() sera excute. Observons prsent une fonction ncessitant la pression simultane de deux touches :
case 'S': //Sauvegarder if(GetKeyState(VK_CONTROL)<0); MenuFichier(ID_SAUVE);

break;

Extrait de PrincWnd.c Le message WM_KEYDOWN est intercept, et sa valeur est S. Dans ce cas, nous testons si la touche CTRL est presse grce la fonction GetKeyState(). Cette fonction retourne un type long, positif si la touche est relche, ngatif si la touche est enfonce. Nous testerons donc ltat de la sortie par rapport zro. Si la touche CTRL est effectivement enfonce, alors nous dclencherons lvnement ID_SAUVE (sauvegarde). \ IV.3.16. Ajout de la fonction Copier

Pour rendre le logiciel MorFi plus intuitif, la fonction Copier a t mise en place. Elle possde deux applications en fonction de son mode dappel. Appel par son raccourci clavier (CTRL+C), la fonction copie dans le presse-papier la fentre de MorFi sous forme de bitmap. Il est alors possible de copier directement limage dans un document Microsoft Word ou dans un logiciel de traitement dimage par exemple.

Un thread (ou processus) est un code binaire en cours dexcution Le focus dsigne la cible de saisie d'une interface utilisateur graphique, contrle fentr auquel s'appliquera la prochaine saisie de l'utilisateur.
51

50

72\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ IV

CENTRE TECHNIQUE DU PAPIER

case 'C': //Copier if(GetKeyState(VK_CONTROL)<0); GetWindowRect(hWndPrinc_G,&cRect); CaptureScreen(hWndPrinc_G,cRect.left,cRect.top,cRect.right,cRect.bottom);

Extrait de princwnd.c Appele par un clic droit sur une page graphique, la fonction copie dans le presse-papier le graphique slectionn. Ainsi il devient plus vident dexporter un graphique dune caractristique de pte afin de lintgrer dans un document par exemple.

case ID_COPIEPP: for(no=0; ((no < CFG_k_NBMAX_FENETRES) && (hWnd != phWndGraph_G[no])); no++); GetWindowRect(phWndGraph_G[no],&cRect); CaptureScreen(phWndGraph_G[no],cRect.left,cRect.top,cRect.right-cRect.left,cRect.bottom-cRect.top); break;

Extrait de graphwnd.c Le code source de la fonction CaptureScreen() permettant de capturer un hWND, de le convertir en HBITMAP puis de le copier dans presse-papier est joint en annexes \ VIII.17.4 Fonction de capture (page 120). \ IV.3.17. Dplacement des fentres

Afin de rendre MorFi plus souple dans son utilisation, il est dcid dintroduire une nouvelle fonctionnalit, savoir la prise en charge du dplacement des fentres au sein dun onglet. Auparavant, dplacer un lment signifiait passer par le formulaire des pages graphiques (PARAMPAGEDLGBOX) dont lutilisation fastidieuse navait de plus rien dintuitive. Cette partie se verra donc nettement amliore, puisque dornavant, modifier les positions dlments sera accessible ds la fentre principale via un clic droit sur llment dplacer. videmment la mise en place dune telle fonction se base en partie sur le travail dj ralis lors du chapitre \ IV.3.14 Rendu dynamique de la barre de menu (page 70). Il reste tout de mme fort faire. Nous ajoutons loption pop-up Dplacement dans le menu contextuel. Ce menu pop-up contient six sous-menus, pointant vers les six positions diffrentes. Comme il ny aurait aucun intrt dplacer un lment vers sa propre position. Dans cet exemple, lors de la slection dun lment la troisime position, celui-ci est dsactiv :
EnableMenuItem(menu,ID_SPOS3,MF_BYCOMMAND | MF_GRAYED);

Imaginons prsent que lutilisateur veuille dplacer cet lment en cinquime position. Llment no 3 met une requte de dplacement vers la position D_SPOS5. Nous rcuprons donc ce message dans une instruction Switch :
case ID_SPOS3: DestPosition=2; goto Deplacement; break;

Extrait de graphwnd.c Note : la destination vaut 2 puisque la valeur initiale du tableau part de 0 pour le 1er lment. Ce type de confusion est un classique lors du dveloppement C/C++. Attention donc. Ltape suivante, Deplacement permet dintervertir les valeurs de la position dorigine et de la position de destination. Une telle opration seffectue par le biais dune variable temporaire. Cette variable temporaire permet deffectuer le tampon entre les deux lments intervertir, qui est ici la dernire section du tableau pppnTabVisu_G[4][6][6]. Le code source de cette fonction est joint en annexes \ VIII.17.5 Fonction dinterversion des lments graphiques (page 120).

SIMONJOLIET 73\128

\2010

CENTRE TECHNIQUE DU PAPIER

\ IV.3.18.

Gestion dun lment double fentre

Pour amliorer la lisibilit de certains lments graphiques, il est convenu de permettre laffichage dlments sur deux fentres. Llment vido possde dj une fonction similaire, mais sa mise en uvre trs diffrente ne peut tre applique ici. Notre nouvelle fonction peut tre adopte nimporte quel lment ; elle nest pour le moment associe qu la Synthse Fibre (matrice) pour amliorer sa lisibilit. Son utilisation est particulirement bien justifie dans le cas de cet lment o une forme carre permet laffichage homogne du Contour Chart, comme nous pouvons le voir ci-dessous Cet lment est plutt complexe mettre en place ; de nombreux paramtres sont en effet prendre en compte. Ainsi ce chapitre se poursuivra en annexes afin de permettre sa rptabilit aux autres lments, la matrice ntant quun exemple pratique. Cette fonction se base elle aussi sur une partie du travail effectu au cours du chapitre \ IV.3.14 Rendu dynamique de la barre de menu (page 70). La suite se situe en annexes \ VIII.9 Procdure dajout dun lment double fentre (page 109).

\ FIGURE IV.3.18-1 Une matrice affiche sur une fentre

\ FIGURE IV.3.18-2 Le mme lment affich sur deux fentres

\ IV.3.19.

Fusion des codes sources

Une fois toutes les modifications techniques mises en uvre, il est ncessaire de passer les connaissances au responsable du logiciel au sein du CTP, en loccurrence Mr Pascal Borel. Cette formation est indispensable. Si le support crit est garanti par ce mmoire et ses annexes, certaines fonctions ayant t entirement crites ou rcrites, il devient ncessaire deffectuer une analyse approfondie du logiciel dans son nouveau fonctionnement. Cette tape termine, nous pouvons dmarrer la fusion des codes sources. La version v7.13.00 du logiciel a continu dvoluer en mme temps (notamment avec les versions 7.13.02 et 7.14) que les travaux de redfinition graphiques. Aussi les deux versions ( savoir, la version remodele, v7.13.00sj, et la version nettoye, v7.14) devront tre fusionnes pour concrtiser la version v8.0 de ce logiciel. Voici la reprsentation de lagencement des diffrentes versions sur le plan chronologique :

74\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ IV

CENTRE TECHNIQUE DU PAPIER

\ FIGURE IV.3.19-1 Schma des versions de dveloppement du logiciel

Figure IV.2 Afin de raliser cette tape le plus simplement possible et plutt que de redvelopper manuellement des solutions dj mises en place, il est prvu dutiliser un utilitaire de comparaison binaire de fichiers52. Un tel outil, WinDiff, est livr en SDK avec les suites Microsoft Visual Studio ; ainsi il est convenu de lutiliser. Pour une grande partie des sources, le travail dj effectu est refaire par le biais dun remplacement automatique puis manuel. Ce qui se rvle tre relativement fastidieux sur certains fichiers sources auquel de profondes restructurations ont t apportes (comme princwnd.c, graphwnd.c ou encore create.c). La fusion sera ralise en partant du point dentre du programme (dans la fonction Winmain() du fichier source morfi.c), pour atteindre les autres sources par un cheminement chronologique. \ IV.3.20. Finalisation de la nouvelle version

Lorsque la version 8.0 du logiciel MorFi est fonctionnelle, nous entrons en phase de beta test. La priorit est prsent de tester si aucun bogue nexiste dans cette nouvelle version, si celle-ci ninflue pas sur les valeurs mesures et enfin si le comportement est identique avec lancienne version. Une prsentation de la nouvelle version en phase beta est effectue au 10 Septembre 2010 devant les multiples intervenants du projet. Voir annexe \ V.4.2 Runion du 10 Septembre 2010 (page 83). Lors de cette runion, un diaporama des nouvelles fonctionnalits de MorFi v8.0 est prsente, en se basant sur une procdure mise au point pour loccasion. Cette procdure permet de montrer une grande partie des travaux effectus en mettant laccent sur la partie fonctionnalit. Cette procdure est jointe en annexe \ VIII.10 Procdure de dmonstration de MorFi v8.0 (page 111). Les modifications demandes lors de cette runion sont ensuite apports au logiciel. Aprs quoi, nous ralisons une grande srie de tests sur la version beta, en dmonstration comme en situation relle (avec le matriel de laboratoire). La partie localisation aura t intgralement retravaille afin de supprimer les doublons et les lments inutiles. Dune manire gnrale, cette dernire tape porte sur la rsolution longue mais ncessaire des problmes les plus bnins que peut rencontrer le logiciel.

52

Un comparateur est un logiciel qui, partir de deux fichiers ou de deux dossiers, expose les modifications relatives aux deux versions. Ce type dutilitaire est trs employ en dveloppement de solutions logicielles consquentes.

SIMONJOLIET 75\128

\2010

CENTRE TECHNIQUE DU PAPIER

\ V.

GESTION DE PROJET
\ V.1 MISE EN PLACE DE LA CHARTE GRAPHIQUE LOGICIELLE

Lorsque la solution est porte et valide, il est possible de commencer la rdaction de la charte graphique applique aux logiciels. Celle-ci sinspire en partie de la charte existante (CTP, 2007), tout en prenant en compte des choix technologiques mis en place lors du remodelage de linterface de MorFi. Ce document est joint en annexe, page 123.

\ V.2

INTERVENANTS AU PROJET

Intervenants directs Mr Simon Joliet, en qualit de stagiaire responsable du projet. Mr Pascal Ottenio, en qualit de matre de stage. Mr Guy Eymin-Petot-Tourtollet, en qualit de directeur de lUST10. Mr Dominique Moineau (Techpap), en qualit de technico-commercial de la filiale TechPap. Mr Pascal Borel, en qualit de responsable du dveloppement du logiciel MorFi et dingnieur de recherche de lUST10.

Se rfrer lOrganisation Breakdown Structure fourni avec les outils de gestion de projet dans le chapitre \ V.3.2 Organisation Breakdown Structure (OBS) (page 77). Intervenants indirects Mr Davy Soysouvanh, en qualit dingnieur de recherche de lUST10.

\ V.3

OUTILS DE GESTION DE PROJET


\ V.3.1. Diagramme PERT

Afin didentifier le chemin critique du projet, un diagramme PERT est ralis.

La mise en place technique des tches effectues appliques au diagramme PERT est relativement cohrente avec le prvisionnel, ce qui est une bonne chose. Dans le cadre du projet, toutes les tches sont ralises en autonomie, lexception dune, Nettoyage du code source qui sera ralise par Mr Pascal Borel. Ainsi, le chemin critique est Optimisation ; la tche Fusion dpendant de ces deux dernires.

76\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\V

CENTRE TECHNIQUE DU PAPIER

\ V.3.2.

Organisation Breakdown Structure (OBS)

Afin de mieux cerner les implications des multiples intervenants, un diagramme de type OBS est mis en uvre. Nous limiterons ici le nombre dintervenants au projet 5, mme si dautres participants existent pour certaines tches moins gnrales.

Qui ?

Stagiaire Simon JOLIET

Matre de stage Pascal OTTENIO

Responsable Logiciel Pascal BOREL

Responsable Service Guy E.P.Tourtollet

Client TechPap

Quoi ? Dfinitions des besoins Etudes prliminaires Conception Ralisation Mise en uvre

R+P R R R R

E+C+V V E S V

E+C+V C E+ P E+ P V+P

E + C+ V C E E V

P V V S

Lgende : Responsabilit (obligatoire et unique) Encadrement Production (ou participation) Validation Certification / Approbation Support

SIMONJOLIET 77\128

\2010

CENTRE TECHNIQUE DU PAPIER

\ V.3.3.

Work Breakdown Structure (WBS)

Afin daider organiser le projet tout en dterminant au mieux la structure hirarchique des tches, un WBS a t ralis. Cinq tches principales composent cette mission. Cette division verticale des ralisations permet doffrir une vision synthtique du projet, dterminant au mieux les aspects livrables de celui-ci :

78\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\V

CENTRE TECHNIQUE DU PAPIER

\ V.3.4.

Diagramme de GANTT planifi

SIMONJOLIET 79\128

\2010

CENTRE TECHNIQUE DU PAPIER

\ V.3.5.

Diagramme de GANTT rel

80\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\V

CENTRE TECHNIQUE DU PAPIER

\ V.4

COMPTE RENDU DE REUNION


\ V.4.1. Runion du 16 Juillet 2010

Runion de pr-production Les intervenants externes assistant la runion de projet sont : Mr Simon Joliet, en qualit de stagiaire responsable du projet. Mr Pascal Ottenio, en qualit de dveloppeur de systmes informatiss de lUST10 et de matre de stage. Mr Guy Eymin-Petot-Tourtollet, en qualit de directeur de lUST10. Mr Davy Soysouvanh, en qualit dingnieur de recherche de lUST10. Mr Dominique Moineau (Techpap), en qualit dingnieur commercial de la filiale TechPap. Mr Pascal Borel (non prsent), en qualit dingnieur de recherche de lUST10, responsable du dveloppement du logiciel MorFi.

Lordre du jour est la rflexion concernant la nouvelle interface du logiciel danalyse morphologique des fibres, MorFi. La runion commence 10h15. Une prsentation PowerPoint est visionne ; celle-ci fait un tat des lieux du logiciel MorFi, des rflexions et des tudes effectues au pralable. Le changement du logotype louverture du logiciel, ou Splash screen est adopt lunanimit. Les cadres noirs sparant les graphiques, de par leur aspect vtustes, seront supprims. La librairie graphique Chart Director, qui a pour vocation dans ce projet de remplacer les graphiques actuels, est prsente. Lutilisation de cette librairie graphique est accepte lunanimit. Le remplacement des lments graphiques de type histogrammes et distributions seront remplacs par les lments quivalents fournis par la solution Chart Director. Cette solution est retenue ; les couleurs des graphiques doivent tre paramtrables par le biais dun fichier de prfrence .ini. Aucun formulaire de choix de couleur nest pour le moment prvu. La couleur par dfaut sera le rouge normalis par la charte graphique du Centre Technique du Papier (PANTONE 485C). Un lment nomm Rpartition des fibres sera cr, et permettra de remplacer lactuelle matrice. Un graphique de contour (de type Chart Director) viendra complter lexistant, qui ne sera pas supprim. Les tableaux ne seront pas modifis structurellement, mais ils seront placs eux-mmes dans des lments Chart Director. Les couleurs et les polices seront modifies afin de respecter la charte graphique. Laccs aux diffrentes fentres ne se fera plus par lintermdiaire de boutons, mais par un systme donglets, tels que vus dans les navigateurs internet rcents. Llment en bas de page sera plac en partie suprieure, afin que tous les contrles utilisateur soient situs dans cette mme zone. Les deux barres seront fusionnes afin de crer un lment rappelant le type ruban ou ribbon , tel que vus dans les logiciels actuels, comme par exemple la suite Microsoft Office. Cet lment regroupera toutes les fonctions utilises lors dune utilisation typique du logiciel MorFi. Les menus actuels seront modifis, mais ne seront pas supprims. Laide sera par contre supprime. Un logo sera plac dans le ruban. Il pointera vers une ressource externe, au choix le logotype du Centre Technique du Papier, ou celui de TechPap (ou tout autre bitmap). Une prsentation du portage ralis en date est alors montre. A 11h15, lordre du jour est puis et la runion est leve.

SIMONJOLIET 81\128

\2010

CENTRE TECHNIQUE DU PAPIER

\ V.4.1. Runion de finalisation

Runion du 23 Aot 2010

Les intervenants externes assistant la runion de projet sont : Mr Simon Joliet, en qualit de stagiaire responsable du projet. Mr Pascal Ottenio, en qualit de dveloppeur de systmes informatiss de lUST10 et de matre de stage. Mr Dominique Moineau (Techpap), en qualit dingnieur commercial de la filiale TechPap. Mr Pascal Borel, en qualit dingnieur de recherche de lUST10, responsable du dveloppement du logiciel MorFi.

Lordre du jour concerne les finalisations apporter au logiciel MorFi dans une version de dveloppement avanc et fonctionnelle. La runion commence 14h00. Une prsentation de la nouvelle version de MorFi est faite. Il est montr laspect dfinitif du logiciel, tel que dcid au cours de la prcdente runion, en insistant sur les diffrentes fonctions ajoutes ou modifies. Concernant limpression, il est prvu de supprimer les cadres noirs par dfaut autour des lments graphiques et de conditionner limpression des fonds dlments gnrs par Chart Director. Un lment Check Box ainsi quune cl dans un fichier *.ini conditionnera cette option. La qualit lors de limpression doit tre amliore. Le numro de version du logiciel ne doit plus tre imprim en haut gauche. Il sera possible sur un lment vide dajouter une image bitmap externe. Celle-ci permettrait par exemple MorFi dtre mis aux couleurs dun client voulant par exemple apposer son sceau sur un produit analys via le logiciel, ce par le biais dune capture dcran ou dune impression de celui-ci. Toutes les polices, notamment celle des lments gnrs grce Chart Director, devront tre utilisables avec la fonction ClearType de Windows, ce afin de limiter le crnelage prsent sur les bitmaps affichs lcran, ou imprims. Concernant la matrice dlments, 10 classes devront tre affiches au maximum ; la lgende de ces classes devra tre centre entre les deux bornes. Suppression du test de Rnchi dans le formulaire de calibration du logiciel ; ce test nest plus utilis. A 15h05, lordre du jour est puis et la runion est leve.

82\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\V

CENTRE TECHNIQUE DU PAPIER

\ V.4.2. Runion de fin de projet

Runion du 10 Septembre 2010

Les intervenants externes assistant la runion de projet sont : Mr Simon Joliet, en qualit de stagiaire responsable du projet. Mr Pascal Ottenio, en qualit de dveloppeur de systmes informatiss de lUST10 et de matre de stage. Mr Guy Eymin-Petot-Tourtollet, en qualit de directeur de lUST10. Mr Pascal Borel, en qualit dingnieur de recherche de lUST10, responsable du dveloppement du logiciel MorFi. Mr Davy Soysouvanh, en qualit dingnieur de recherche de lUST10. Mr Jean Ruiz, en qualit en qualit dingnieur de recherche de lUST10. Mr Thierry Lamboley, en qualit de dveloppeur de systmes informatiss de lUST10. Mr Dominique Moineau (Techpap), en qualit de directeur technique de la filiale TechPap. Mr Michel Petit-Conil, en qualit de manager de lUST5 Process-Ptes et Fibres Fonctionnelles et responsable dInTechFibres. Mr Franois Cottin, en qualit de technicien papetier utilisateur de MorFi au sein dInTechFibres.

Lordre du jour concerne la prsentation du tout nouveau logiciel MorFi dans sa version quasifinale, en version v8.0 beta, suivie dune dmonstration en temps rel du logiciel et de ses fonctionnalits. La runion commence 10h00. Un diaporama PowerPoint est prsent. Il indique de manire structure les travaux raliss sur linterface de MorFi. Sont alors exposs aprs une brve introduction : le ruban, les histogrammes, les distributions, la nouvelle matrice, les tableaux dlments, de synthse et StatMorF. Les nouvelles fonctionnalits sont ensuite dvoiles. Notamment : le support dun bitmap sur llment vide, les raccourcis claviers, les menus retravaills comprenant des icnes, linteraction supporte avec le presse-papier, le dplacement dlments de la fentre principale, la possibilit dagrandir un lment et la meilleure gestion de limpression. Deux impressions couleurs, en portrait et en paysage sont alors laisses lapprciation des intervenants. Une dmonstration en temps rel est ensuite ralise. Celle-ci reprend tous les lments cits, en accord avec les travaux effectus. Cette procdure est joint en annexe du mmoire, \ VIII.10 Procdure de dmonstration de MorFi v8.0 (page 111). Les remarques suivantes sont faites : concernant la matrice, il faut fixer lchelle en valeurs strictement positives. Lajout de la possibilit de dsactivation des chiffres sur cet lment doit tre appliqu. Enfin, il est prvu de tester la possibilit dafficher cette matrice en 3D via Chart Director. Lors dune mesure, la masse de lchantillon peut tre spare par une virgule (notation franaise) en plus du point (notation anglo-saxonne). Le champ Masse doit tre ajout dans le tableau du carrousel. Le tableau de synthse ou StatMorF doit pouvoir prsenter la valeur Longueur Pondr en Surface . Le nom du fichier de localisation doit tre repr par un seul champ dans le fichier de configuration de linterface, au lieu de deux champs concatns. Le titre de llment StatMorF doit tre localis (ajout dun nouvel lment dans le fichier de localisation).

SIMONJOLIET 83\128

\2010

CENTRE TECHNIQUE DU PAPIER

Lors de limpression, les marges de lentte et des lments ne sont pas les mmes. Ce point est corriger. Toujours lors de limpression, il est demand daugmenter la taille des fontes. Puis, Mr Pascal Borel prend la parole afin de prsenter le nouvel lment Rpartition des Fibres & Fines , puis une dmonstration est effectue afin de montrer la nouvelle intgration du Solver, utilis conjointement des quations externes places dans un fichier de configuration, en sortie sur llment tableau StarMorF. A 12h00, lordre du jour est puis, et la runion est leve.

84\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ VI

CENTRE TECHNIQUE DU PAPIER

\ VI.

CONCLUSION

Au cours de la ralisation de ce projet, dont nous avons pu suivre pas pas lvolution, nous avons saisi ce quimpliquait le remodelage dune Interface Homme-Machine dun logiciel professionnel. Ds lors, nous sommes en capacit de prsenter de faon synthtique les rponses notre problmatique.

Le catalogue actuel des logiciels grand public est le moteur des Interfaces Homme-Machine telles que nous les entendons. Ignorer ce point serait mal venu : nous ne pouvons plus passer outre limportance et la force quexercent ces produits sur les attentes des consommateurs prsents et venir. Par consquent, apprhender le remodelage dune Interface Homme-Machine revient adapter (et non pas copier) le modle dvelopp grand frais par les diteurs de logiciels grand public. En effet ceux-ci possdent les moyens dtudier et de dvelopper des solutions dont une grande partie des ressources sera justement consacre linterface de celles-ci. Bien videmment les diteurs de solutions professionnelles sont incapables de rivaliser avec les diteurs grand public sur ce terrain ; ce nest de toute faon pas le but. Procder ce remodelage implique donc de dvelopper nos propres solutions en gardant lesprit ce que lutilisateur peut connatre et utiliser dans sa vie de tous les jours. Un bref regard sur le systme dexploitation Microsoft Windows 7 ou sur la suite logicielle Microsoft Office 2010 permet de comprendre quune telle tche na rien de simple ; elle reprsente malgr tout un enjeu considrable pour lentreprise.

Ce stage de 9 semaines au sein du Centre Technique du Papier maura permis de mettre en vidence deux fonctions cls : celles du dveloppeur et celle du chef de projet. Ces deux fonctions ont t indissociables pour la ralisation de ce projet sur un logiciel professionnel complexe lhistorique charg. Jai t amen me les approprier ainsi que dautres comptences dans les domaines : de la communication, de la programmation structure, du graphisme et de la qualit. Ce stage au sein dun centre de recherche semi-public de 150 personnes fut pour moi une exprience unique, minemment formatrice dont je suis certain de garder un excellent souvenir.

SIMONJOLIET 85\128

\2010

CENTRE TECHNIQUE DU PAPIER

\ VII. BIBLIOGRAPHIE
\ VII.1 REFERENCES
Aitken, Y., Cadel, F., & Voillot, C. (1988). Constituants fibreux des ptes papiers et cartons - Pratique de l'analyse. Grenoble: CTP. COPACEL. (2007). La Fabrication - Copacel. Consult le Aot 21, 2010, sur www.copacel.fr: http://www.copacel.fr/site/spip.php?rubrique30 COPACEL. (2007). L'Histoire - Copacel. Consult le Aot 21, 2010, sur www.copacel.fr: http://www.copacel.fr/site/spip.php?rubrique29 CTP. (2007). Charte Graphique. Grenoble: CTP. CTP. (2007, Juin). Livret d'acceuil. Grenoble. CTP. (2009, Dcembre). Retrospective. Le rapport annuel du CTP. Grenoble, France. Eymin Petot Tourtollet, G., Cottin, F., Cochaux, A., & Petit-Conil, M. (2003). The use of MorFi analyser to characterise mechanical pulps. Grenoble: International Mechanical Pulping Conference. INPG. (1999). http://cerig.efpg.inpg.fr/icg/dossiers/papier/chap1-mat-1eres.html. Consult le Juillet 26, 2010, sur http://cerig.efpg.inpg.fr. INPG. (2003, Mai). Le chanvre : papeterie, fabrication du papier, fibre, utilisation. Consult le Juillet 25, 2010, sur inpg.fr: http://cerig.efpg.inpg.fr/memoire/2005/chanvre-papeterie.htm Microsoft. (2003). http://www.microsoft.com/france/permission/copyrgt/cop-img.htm. Consult le Juillet 28, 2010, sur http://www.microsoft.com. Microsoft. (2010, Juin 23). GetPrivateProfileString Function. Consult le Juillet 29, 2010, sur MSDNA: http://msdn.microsoft.com/en-us/library/ms724353%28v=VS.85%29.aspx Microsoft. (2010, Juin 20). Security Enhancements in the CRT. Consult le Juillet 16, 2010, sur http://msdn.microsoft.com: http://msdn.microsoft.com/frfr/library/8ef0s5kh%28v=VS.80%29.aspx Nougier, P., & Lecourt, M. (2005). L'analyse morphologique des fibres. Nangis: FCBA. TechPap. (2006). MORFI LB-01 - Mesure morphologique des fibres et bchettes - Version Laboratoire. Saint-MartindHres. Yan, Y. (2006, Aot 08). New Evidence suggests longer paper making history in China. Consult le Juillet 29, 2010, sur Xinhua - English: http://news.xinhuanet.com/english/2006-08/08/content_4937457.htm

86\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ VII

CENTRE TECHNIQUE DU PAPIER

\ VII.2 TABLE DES FIGURES


\ FIGURE I.2.2-1 Fibres la surface dun papier Kraft ........................................................................................................ 14 Source : http://cerig.efpg.inpg.fr/icg/dossiers/papier/Images/FibreKraft1.GIF \ FIGURE I.2.2-2 Surface dun papier couch........................................................................................................................ 17 Source : http://cerig.efpg.inpg.fr/icg/dossiers/papier/Images/CouchClass1.GIF \ FIGURE II.1.1-1 Logotype du CTP ...................................................................................................................................... 20 Source : Interne CTP (Disque commun communication ) \ FIGURE II.1.1-2 Localisation du CTP .................................................................................................................................. 20 Source : http://maps.google.fr/ \ FIGURE II.1.1-3 Organisation du CTP ................................................................................................................................ 22 Source : Rapport annuel 2009 Retrospective du CTP \ FIGURE II.1.1-4 Organigramme du service daccueil ........................................................................................................ 24 Source : Cration personnelle (Microsoft Visio) \ FIGURE II.1.2-1 Logotype de TechPap ............................................................................................................................... 25 Source : Interne CTP (Disque commun communication ) \ FIGURE II.1.2-2 Organigramme de la filiale TechPap ...................................................................................................... 26 Source : Cration personnelle (Microsoft Visio) \ FIGURE II.1.3-1 Logotype du FCBA ................................................................................................................................... 26 Source : Interne CTP (Disque commun communication ) \ FIGURE II.1.4-1 Logotype dInTechFibres ......................................................................................................................... 26 Source : Interne CTP (Disque commun communication ) \ FIGURE II.1.5-1 Logotype de TekLiCell ............................................................................................................................. 27 Source : Interne CTP (Disque commun communication ) \ FIGURE II.1.6-1 Logotype de lINP Pagora ........................................................................................................................ 27 Source : Interne CTP (Disque commun communication ) \ FIGURE II.1.7-1 Logotype du CTI ....................................................................................................................................... 27 Source : Interne CTP (Disque commun communication ) \ FIGURE III.1-1 Rpartition gographique du systme danalyse MorFi ........................................................................ 28 Source : Cration personnelle (Inkscape) \ FIGURE III.1.2-1 Icne de MorFi v7.13 .............................................................................................................................. 28 Source : Icne extraite de MorFi v7.13.00 \ FIGURE III.2.1-1 Logotype de Microsoft Visual Studio 6.0 ............................................................................................ 33 Source : Icne extraite de Microsoft Visual Studio 6.0 \ FIGURE III.2.2-1 Logotype de Microsoft Visual Studio 2010 ......................................................................................... 34 Source : Icne extraite Microsoft Visual Studio 2010 \ FIGURE IV.1-1 Agencement de MorFi ................................................................................................................................ 38 Source : Cration personnelle (Microsoft Visio) \ FIGURE IV.2-1 Splash screen original du logiciel MorFi ............................................................................................ 38 Source : Extrait des sources de MorFi v7.13.00 \ FIGURE IV.3.1-1 Un histogramme sous MorFi 7.13 ........................................................................................................ 40 Source : Impression dcran de llment sous de MorFi v7.13.00 \ FIGURE IV.3.1-2 Une distribution sous MorFi 7.13 ......................................................................................................... 36 Source : Impression dcran de llment sous de MorFi v7.13.00 \ FIGURE IV.3.1-3 Exemple dlments raliss laide de Chart Director .................................................................... 40 Source : Extraits du fichier daide de Chart Director, (cppchartdir.chm) \ FIGURE IV.3.1-4 Le nouvel lment histogramme ........................................................................................................... 42 Source : Impression dcran de llment sous de MorFi v8.00 \ FIGURE IV.3.1-5 Un nouvel lment de distribution........................................................................................................ 43 Source : Impression dcran de llment sous de MorFi v8.00 \ FIGURE IV.3.1-6 Une synthse sous MorFi 7.13 ............................................................................................................... 43 Source : Impression dcran de llment sous de MorFi v7.13.00 \ FIGURE IV.3.1-7 Une nouvelle matrice ............................................................................................................................... 43 Source : Impression dcran de llment sous de MorFi v8.00 \ FIGURE IV.3.1-8 Un tableau sous MorFi 7.13 ................................................................................................................... 43 Source : Impression dcran de llment sous de MorFi v7.13.00

SIMONJOLIET 87\128

\2010

CENTRE TECHNIQUE DU PAPIER

\ FIGURE IV.3.1-9 Un nouveau tableau ................................................................................................................................. 45 Source : Impression dcran de llment sous de MorFi v8.00 \ FIGURE IV.3.1-10 Un nouveau tableau dangle des coudes ............................................................................................ 45 Source : Impression dcran de llment sous de MorFi v8.00 \ FIGURE IV.3.2-1 Un formulaire non li au style du systme ........................................................................................... 51 Source : http://i.msdn.microsoft.com/06da8ztk.vbXPConAfter%28fr-fr,VS.100%29.gif \ FIGURE IV.3.2-2 Le mme formulaire, li au style du systme ....................................................................................... 51 Source : http://i.msdn.microsoft.com/dynimg/IC156503.gif \ FIGURE IV.3.2-3 Nouveau splash screen ............................................................................................................................ 51 Source : Cration personnelle (Gimp) \ FIGURE IV.3.3-1 Formulaire initial ...................................................................................................................................... 52 Source : Impression dcran de llment sous de MorFi v7.13.00 \ FIGURE IV.3.3-2 Formulaire retravaill ............................................................................................................................... 52 Source : Impression dcran de llment sous de MorFi v8.00 \ FIGURE IV.3.4-1 Exemple demploi du ruban sous Microsoft Paint............................................................................. 52 Source : Impression dcran du ruban de Microsoft Paint sous Windows 7 \ FIGURE IV.3.4-2 Maquette de la version actuelle du logiciel MorFi .............................................................................. 52 Source : Cration personnelle (Microsoft Visio) \ FIGURE IV.3.4-3 Maquette type de la future version du logiciel MorFi ........................................................................ 52 Source : Cration personnelle (Microsoft Visio) \ FIGURE IV.3.4-4 Anciennes ressources utilises pour slectionner les pages graphiques.......................................... 52 Source : Extrait des sources de MorFi v7.13.00 \ FIGURE IV.3.4-5 Anciennes ressources utilises pour slectionner les contrles utilisateurs ................................... 52 Source : Extrait des sources de MorFi v7.13.00 \ FIGURE IV.3.4-6 Les nouveaux onglets, slectionns et non-slectionns ................................................................... 53 Source : Cration personnelle (Gimp) \ FIGURE IV.3.5-1 Le nouveau logotype du systme MorFi ........................................................................................ 57 Source : Cration personnelle (Inkscape) \ FIGURE IV.3.5-2 Logotype du ruban ................................................................................................................................... 57 Source : Cration personnelle (Inkscape) \ FIGURE IV.3.5-3 Nouveau splash screen ............................................................................................................................ 57 Source : Cration personnelle (Inkscape) \ FIGURE IV.3.5-4 Le ruban intgr aux formulaires........................................................................................................... 57 Source : Cration personnelle (Gimp) \ FIGURE IV.3.8-1 Nouvelles fonctions du ruban ................................................................................................................ 62 Source : Cration personnelle (Gimp) \ FIGURE IV.3.9-1 Echec de chargement .............................................................................................................................. 64 Source : Extrait de la bibliothque dicnes Silk Icon \ FIGURE IV.3.14-1 Illustration de principe dun menu ...................................................................................................... 70 Source : Cration personnelle (Microsoft Visio) \ FIGURE IV.3.14-2 Ancien menu Fichier ............................................................................................................................. 70 Source : Cration personnelle (Microsoft Visio) \ FIGURE IV.3.14-3 Nouveau menu Fichier.......................................................................................................................... 70 Source : Cration personnelle (Microsoft Visio) \ FIGURE IV.3.18-1 Une matrice sur affiche sur une fentre ........................................................................................... 74 Source : Impression dcran de llment sous de MorFi v8.00 \ FIGURE IV.3.18-2 Le mme lment, affich sur deux fentres ..................................................................................... 74 Source : Impression dcran de llment sous de MorFi v8.00 \ FIGURE IV.3.19-1 Schma des versions de dveloppement du logiciel ........................................................................ 74 Source : Cration personnelle (Microsoft Visio)

88\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ VII

CENTRE TECHNIQUE DU PAPIER

\ VII.3 LIENS

Sites officiels des partenaires


CTP TechPap FCBA

http://www.webctp.com/

http://www.techpap.com/

http://www.fcba.fr

TekLiCell

Pagora

Technidyne

http://www.teklicell.com/

http://pagora.grenoble-inp.fr/

http://www.technidyne.com/

La fabrication du papier
http://cerig.efpg.inpg.fr/icg/Dossiers/Papier/introduction.html http://www.ac-grenoble.fr/ageron/spip.php?article155 http://fr.wikipedia.org

Devis de traduction
www.translated.net/fr/

Code sources et tutoriels:


http://msdn.microsoft.com/fr-fr/default.aspx http://www.siteduzero.com/ http://c.developpez.com/ http://www.cppfrance.com/

Bibliothque dicones
http://www.iconfinder.com/ http://www.crystalxp.net/ http://www.customxp.net/PngFactory/

Source des logiciels tlchargs


http://www.clubic.com/ http://msdn20.e-academy.com http://www.advsofteng.com/

SIMONJOLIET 89\128

\2010

CENTRE TECHNIQUE DU PAPIER

90\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ VII

CENTRE TECHNIQUE DU PAPIER

ANNEXES

SIMONJOLIET 91\128

\2010

CENTRE TECHNIQUE DU PAPIER

92\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ VIII

CENTRE TECHNIQUE DU PAPIER

\ VIII. ANNEXES
\ VIII.1 SPECIFICATIONS TECHNIQUES DU SYSTEME MORFI
Temps d'analyse Fibres ( 0.03 g/l) 2 minutes (+ de 3000 fibres) Bchettes ( 0.3 g/l) moins de 3 minutes Caractristiques Mesures Fibres Nombre de fibres par gramme Longueur Moyenne (Arithmtique, Pondre en long. ou surf.) Distribution en Longueur Largeur Moyenne de Distribution en Largeur Distribution Longueur = fonction (largeur) Reprsentation 3D Ratio fibres longues / courtes = fonction (longueur, largeur) Masse Linique / Nombre de fibres par gramme calcul systmatique Courbure Moyenne Distribution des Courbures Angle Moyen des Coudes en degr Distribution des Coudes 5 classes paramtrables Nombre Moyen de Coudes par fibre Coude Pourcentage de Fibres Coudes % ratio fibres casses % ratio de macro fibrilles Bchettes Longueur & largeur Moyenne Distribution en Longueur (Arithmtique, pondre en en long. ou surf.) Distribution en largeur Surface Totale / Gramme Distribution des Surfaces Distribution Longueur = f(largeur) Reprsentation 3D Elments Fins Taux d'lments fins (% surface des lments fins / les autres objets) Pondration en Longueur et Surface des lments fins Distribution des fines par classes de surface et de longueur 10 classes paramtrables Moyenne arithmtique de la longueur & surface Dimensions du capteur Dimensions (hors cran) Meuble 80 x 80 x 100 cm Rsultats affichs sur cran 17 Image de la Pte Visualisation de l'ensemble des Caractristiques Mesures (cf. ci-dessus)

Jusqu des fibres de 10 mm 10 classes paramtrables Profil sur 100 classes fixes 10 75 m paramtrables 10 classes paramtrables

5 classes paramtrables

10 classes paramtrables 10 classes paramtrables 10 classes paramtrables

(TechPap, 2006)

SIMONJOLIET 93\128

\2010

CENTRE TECHNIQUE DU PAPIER

\ VIII.2 REPARTITION GEOGRAPHIQUE DES SYSTEMES MORFI EXISTANTS


Pays Socit / Usine AFRIQUE DU SUD SAPPI SAPPI Technology Centre SAPPI KRAFT (Pty) Ltd MONDI PACKAGING PAPER SERVICES A CSIR ALLEMAGNE FELIX SCHOELLER JR LANG PAPIER BTG Instruments GmbH HOLLINGSWORTH and VOSE ARGENTINE PAPEL PRENSA S.A.I.C.F.M AUTRICHE TECHNISCHE UNIVERSITAET WIEN SAPPI MONDI BUSINESS PAPER BRESIL VOTORANTIM Celulose e Papel CHINE WUHAN TOBACCO MinFeng Paper KaiFeng specialty paper GuangDong Paper Research Institu Zhejiang Winbon Specialty Paper ShangDong BoHui KaiEn Specialty Paper South China University of Techno SHANDONG CHEN MING National Starch FuJian Agriculture and Forestry COLOMBIE Productos Familia COREE KOREA RESEARCH INSTITUTE OF CHEM K&G CENTRAL RESEARCH INTITUTE SUNMIN TRADING ESPAGNE HolmenPaper Madrid S.L Universitat de Girona FRANCE CENTRE TECHNIQUE DU PAPIER ECOLE FRANCAISE DE PAPETERIE AHLSTROM RCC ATOFINA PDM INDUSTRIES AFOCEL TEMBEC R&D TARTAS R.A.C.I.O / Institut du Pin BANQUE DE FRANCE TEMBEC R&D KRAFT ARJOWIGGINS CANSON Groupe Nombre 5 1 1 1 1 1 4 1 1 1 1 1 1 3 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 2 1 1 21 1 1 1 1 1 1 1 1 1 1 1 Application Date Cmd aot-03 juin-05 mai-07 juil-07 nov-07 Spciaux LWC nov-01 dc-05 oct-07 juil-10 mars-08 oct-01 fvr-04 avr-08 juin-07 fvr-09 juil-09 sept-09 oct-09 nov-09 dc-09 dc-09 janv-10 fvr-10 mai-10 juin-10 nov-09 Recherche Recherche sept-02 mai-05 mars-06 sept-06 avr-09 Recherche Recherche Recherche Assistance tec spciaux Recherche Recherche Recherche Recherche mai-99 mai-99 dc-99 janv-01 mai-01 oct-01 fvr-02 dc-03 dc-03 sept-04 janv-05

SAPPI SAPPI MONDI

Hatzeld/Eder,

Morphologie Recherche

SAPPI

Cigarette Cigarette Recherche Spciaux Spciaux Chimie Recherche

SCA

AHLSTROM

TEMBEC ARJO WIGGINS

94\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ VIII

CENTRE TECHNIQUE DU PAPIER

PAPETERIE (CONFIDENTIEL) EMIN LEYDIER CONDAT ARJO WIGGINS TEMBEC Saint Gaudens CENTRE TECHNIQUE DU PAPIER NOVIPROFIBRE TEMBEC TARTAS SA GEORGIA-PACIFIC ETC ITALIE BURGO GROUP spa. JAPON AIKAWA IRON WORKS Nippon Paper Papylia Nippn Paper Papylia Mill BTG Japan MALAISIE Novozymes Malaysia Sdn. Bhd. MEXIQUE Papelera de CHIHUAHUA NORVEGE NORSKE SKOG FOLLUM NORSKE SKOG UNION PAYS-BAS SAPPI Netherlands Services INVEN POLOGNE UNIVERSITY OF LODZ PORTUGAL UNIVERSIDADE DA BEIRA INTERIOR SUEDE BTG TAIWAN Chung Hwa Pulp Corporation/ Taiw THAILANDE Advanced Agro Thailand TURKMENISTAN GAP INSAAT U.S.A.

ARJO WIGGINS TEMBEC TEMBEC GEORGIA-PACIFIC

Nippon Paper Nippon Paper

COPAMEX

NORSKE SKOG SAPPI

BTG

SAPPI SAPPI TECHPAP INC PACKAGING CORP. OF AMERICA PCA TECHPAP INC. BTG AMERICAS INC. BTG UNIVERSITY OF WISCONSIN, STEVENS INTEGRATED PAPER SERVICES APPLETON UNIVERSITY OF MAINE, ORONO SAPPI PAPER NORTH AMERICA TECHNO MONDE

1 1 1 1 2 1 1 1 1 1 1 4 1 1 1 1 1 1 1 1 2 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 10 1 1 1 1 1 1 1 1 1 1 79

Recherche

Recherche Recherche

janv-05 mars-05 nov-05 sept-06 dc-06 janv-07 janv-07 sept-07 dc-08 juin-08 mai-04 sept-09 sept-09 fvr-10 mars-10 janv-10 juil-01 oct-03 fvr-05 aot-08

Cigarette Cigarette

Chimie

Recherche Recherche

sept-01 dc-00 dc-06 dc-08 oct-04 sept-03 sept-04 sept-04 sept-04 mars-05 dc-06 mars-07 juil-08 juil-08 juil-08 sept-08

SIMONJOLIET 95\128

\2010

CENTRE TECHNIQUE DU PAPIER

\ VIII.3 PROCEDURE DE MISE AUX NORMES CRT DU PROGRAMME


Les versions rcentes des compilateurs C fournis dans les suites de Microsoft exigent une nouvelle syntaxe. Afin dobtenir une compilation sans avertissements, il est ncessaire de corriger certaines fonctions. Voici typiquement le rsultat de la compilation dune ligne dprcie par le compilateur, dans le fichier distrib.c, inclut dans le programme principal :
sprintf(str,"%s %.0f ",str1, dVal_L);

Dans le cas de la compilation dune telle ligne, la sortie du compilateur rsultante est la suivante :
1>c:\morfi\specif\distrib.c(131): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1>c:\program files\microsoft visual studio 10.0\vc\include\stdio.h(371) :voir la dclaration de 'sprintf'

Ici, le compilateur dprcie la fonction sprintf, et nous invite utiliser sprintf_s, ou dsactiver la dprciation. Cet avertissement C4996 apparat 1978 fois dans le programme principal, et 184 fois dans le fichier DLL. Il existe trois faons de passer outre ces problmes :

96\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ VIII

CENTRE TECHNIQUE DU PAPIER

\ VIII.3.1.

Correction des occurrences

La premire solution, la plus propre et la plus efficace, consiste corriger manuellement toutes ces fonctions. En effet, il nest pas possible dutiliser un outil de remplacement automatique, puisque les fonctions rajouter prennent presque systmatiquement un nouvel argument. Pour information, voici la totalit des fonctions posant problme :
Avertissement CRT CRT CRT CRT CRT POSIX CRT CRT POSIX CRT POSIX CRT CRT CRT POSIX POSIX CRT CRT POSIX CRT CRT POSIX CRT TOTAL Occurences DLL EXE Total 94 1188 1282 21 609 630 26 513 539 1 120 121 19 86 105 0 83 83 4 72 76 5 54 59 0 45 45 0 21 21 0 18 18 2 15 17 0 15 15 0 15 15 0 12 12 0 10 10 10 0 10 0 3 3 0 3 3 1 1 2 1 1 2 0 1 1 1 0 1 185 2885 3070 Fonction sprintf strcpy strcat strncpy _sopen strimp strncat _snprintf getcwd _splitpath strupr fopen _makepath _open strlw lseek strtok ctime itoa fscanf localtime ultoa vsprintf

Le nombre total de modifications entreprendre pour toutes les corrections est de 3070. Quantification en cot horaire et pcuniaire dune telle modification ; en partant du principe que : O : : Cot total, en : Cot horaire, dun ingnieur pour lentreprise, estim 30/h : Temps total de modification, en secondes SIMONJOLIET 97\128 . 3600

\2010

CENTRE TECHNIQUE DU PAPIER

. : Nombre de modifications, en nombre doccurrences, fixe 3070 : Dure moyenne dune modification, en secondes, fixe 30 secondes : Temps total de compilation, en secondes . : Temps de compilation par fichier, en secondes, dtermine 150 secondes : Nombre de compilations, en nombre doccurrences, choisi 60

: Temps total des recherches, en secondes . : Nombre de fonctions recoder, en nombre doccurrences, fix 60 : Temps moyen dune recherche, fixe 120 secondes . . . . 3600

Soit avec les paramtres imposs et dtermins, un cot maximum denviron 1745 \ VIII.3.2. Changement du niveau des alertes

Les alertes gnres par des fonctions dprcies peuvent tre trs gnantes lors de la compilation du projet. En effet ces alertes alourdissent normment la fentre de sortie de la compilation, et il est difficile de visualiser les avertissements lgitimes , de ceux gnrs uniquement par une fonction dprcie par le compilateur. Ainsi, il est possible daugmenter la tolrance aux avertissements, ce qui nest malheureusement pas sans risques. Certains avertissements nempcheront plus la compilation, alors quils le devraient. Cest un vritable problme. Procdure de changement du niveau des alertes (sous Microsoft Visual Studio 2010) : - Slectionnez le projet - Choisissez loption Proprits du projet - Droulez loption C/C++ - Passer le Niveau davertissement de Level 3 \W3 Level 2 \W2 \ VIII.3.3. Dsactivation des avertissements en erreurs

Une deuxime option consiste ne pas ignorer les avertissements, mais ne plus les considrer comme des erreurs et ainsi ne pas gner la compilation. Le problme de cette mthode est que les avertissements viennent surcharger la fentre de sortie, ralentissent la compilation et alourdissent normment la lecture dun journal de compilation. Procdure de changement du niveau des alertes (sous Microsoft Visual Studio 2010) : - Slectionnez le projet - Choisissez loption Proprits du projet - Droulez loption C/C++ - Passez Considrer les avertissements comme des erreurs de \WX \WX-

98\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ VIII

CENTRE TECHNIQUE DU PAPIER

\ VIII.3.4.

Inscription en dur de la non-dprciation

La mthode la plus propre consiste dsactiver les avertissements uniquement pour les fonctions dprcies par le compilateur. Pour ce faire, il suffit dimplmenter la ligne de code suivante dans lentte de tous les fichiers comprenant des fonctions dprcies :
#define _CRT_SECURE_NO_WARNINGS

Une fois cette action porte tous les fichiers incrimins, le projet nest toujours pas compilable. En effet les fonctions dprcies par la norme POSIX ne sont pas ignores par cette dfinition. Sil est possible de faire de mme avec une ligne de dfinition spcifique, les fonctions dprcies par la norme POSIX sont moins nombreuses dans le projet et donc plus facilement remplaables. Consultez le mmorandum dutilisation de fonctions normes CRT et POSIX (annexe \ VIII.5 Mmorandum dutilisation de fonctions normes CRT et Posix, page 102) pour trouver les fonctions remplaantes.

SIMONJOLIET 99\128

\2010

CENTRE TECHNIQUE DU PAPIER

\ VIII.4 CONSIDERATIONS SUR LES FORMULAIRES


Il existe un problme juridique lors de lutilisation de certains lments graphiques, les icnes utilises dans les produits de Microsoft, tels que Windows ou Office, ne sont pas libres de droits comme le stipule cet extrait du contrat de licence dutilisateur final, relatif au droit de limage au sein des logiciels, dans la partie spcifique aux icnes : Icnes Microsoft n'autorise gnralement pas l'utilisation de ses icnes, que ce soit des fins publicitaires, dans des livres ou autres documents imprims, sur des vtements ou d'autres articles promotionnels, en ligne et sur des sites Internet, dans des applications logicielles, dans des programmes tlviss, des spots publicitaires, des tlfilms et/ou sur des cassettes vido, dans la mesure o elles NE DOIVENT PAS tre utilises en tant qu'illustrations ou lments de conception. [] En outre, les diteurs de logiciels (ISV) peuvent tre autoriss utiliser les icnes fournies spcifiquement dans les Kits de dveloppement de logiciels Microsoft (SDK) et certains autres outils et applications de programmation (tels que Visual Basic ou Visual C++), sous rserve que l'utilisation des icnes soit spcifiquement prvue dans le Contrat de Licence Utilisateur Final (CLUF) de Microsoft. []. Les droits de redistribution de certaines icnes sont concds selon les termes du CLUF. []. Si l'utilisation que vous envisagez est prvue dans ces conditions d'utilisation, aucune autorisation crite supplmentaire n'est ncessaire. (Microsoft, 2003) Comme dans le cas prsent, nous utilisons effectivement certains SDK53 de Microsoft (notamment le SDK de Microsoft Windows 7, ainsi que celui respectivement de Microsoft Office 2007 et Office 2010), notre utilisation de tels lments graphiques est conforme la lgislation impose par Microsoft. Enfin, dans la mesure o notre logiciel nest pas vocation grand public, la distribution de celui-ci tant pour ainsi dire anecdotique par rapport au gant de Redmond54, lemploi de ces ressources graphiques est autoris. Deux autres solutions soffrent nous, la premire consiste faire appel un graphiste professionnel, qui nous confierons la charge de la cration dicnes spcifiques notre logiciel. La seconde consiste investir dans une bibliothque dicnes professionnelle, sans avoir la garantie de trouver toute les icnes dont nous aurions besoin. La dernire consiste enfin nutiliser que des icnes libres de droits, au risque de dpareiller des librairies graphiques et donc doffrir un visuel peu homogne. Cette solution nest pas envisageable. Par chance il est possible de trouver des librairies dicnes libres de droits, utilisables dans des logiciels but commerciaux, tels que la librairie Crystal XP . De plus il existe un moteur de recherche nomm Icon Finder (http://www.iconfinder.com/) permettant, partir de mots cls, de trouver une icne. La base de donnes du site en contient, au moment o ces lignes sont rdiges, 170 212, dans 596 collections diffrentes. La fonctionnalit la plus importante reste sans doute le filtre de licence, qui permet de ne pas prendre en compte les icnes qui ne sont pas libres de droits et donc de nafficher que les icnes dont lutilisation dans des programmes commerciaux est autorise. Mieux, il est
Un SDK, ou kit de dveloppement est un ensemble d'outils permettant aux dveloppeurs de crer des applications de type dfini. 54 La ville de Redmond, situe dans l'tat de Washington aux tats-Unis, est la localisation du sige social de Microsoft.
53

100\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ VIII

CENTRE TECHNIQUE DU PAPIER

possible de tlcharger directement une icne dans une rsolution dfinie, avec prise en charge ou non du niveau de transparence. Toujours concernant les formulaires, la police utilise majoritairement est MS Sans Serif. Le problme majeur de lutilisation de cette police, cest son apparente vtust. Et pour cause : celle-ci nest pas lisse comme le sont toutes les polices modernes. Il sagit de la police par dfaut des systmes Microsoft de Windows 3.1 Windows Me. Voici un aperu de cette dernire : ou encore . Dans le but dune uniformisation du logiciel, il est dcid que les polices utilises seraient dsormais Arial55 dans les formulaires et Arial Narrow ainsi que Calibri56 dans les graphiques et les lements de la fentre principale, tels que la barre doutils (ou ruban). Origine
FONT 8, "MS Sans Serif" hPetiteFont_G = CreateFont(14,0,0,0,0,0,0,0,0,0,0,0,0,"Arial");

Remplac par :
FONT 8, "Arial" hPetiteFont_G = CreateFont(14,0,0,0,0,0,0,0,0,0,0,0,0,"Calibri");

Note : pour un affichage optimal des lments, il est ncessaire dactiver la fonction Clear Type de Windows. Cette fonction existe depuis XP, ou elle nest pas active par dfaut. Pour lactiver, voici la marche suivre : Clic droit sur le bureau puis Proprits. Choisir longlet Apparence et appuyez sur le bouton Effets. Cochez la deuxime case (Utilisez la mthode suivante pour lisser les bords des polices cran) puis slectionnez ClearType. Cette fonction est active par dfaut sur les systmes suprieurs Windows XP. Une police cre avec la fonction CreateFont doit imprativement tre dtruite la fermeture du programme. Cette action nest pas automatique et le fait de ne pas dtruire ces polices peut entrainer des fuites mmoire. En effet, la mmoire alloue lors dun CreateFont ne peut tre libre quexplicitement, via la fonction DeleteObject(HFONT). Il est aussi prvu dajouter aux formulaires courants un bandeau au couleurs de MorFi, rappellant ceux que lon peut voir dans certains logiciels grand public, ce dans un but purement esthtique. Ce bandeau est en partie inspir de llment fibre, extrait du logotype ralis pour MorFi (voir chapitre \ IV.3.5 Cration dun nouveau logotype, page 57 ).

Arial est une police de caractres fournie avec plusieurs applications de Microsoft. Elle a t dessine par Monotype en tant que substitut meilleur march que la clbre Helvetica. Sa popularit est nottament due au fait quelle soit livre en standard avec les systmes dexploitation Windows. 56 Calibri est une police de caractres de la famille sans serif. Elle fait partie des six polices introduites avec Microsoft Windows Vista, son but avou tant le remplacement de la police Arial.

55

SIMONJOLIET 101\128

\2010

CENTRE TECHNIQUE DU PAPIER

\ VIII.5 MEMORANDUM DUTILISATION DE FONCTIONS NORMEES CRT ET POSIX


\ VIII.5.1. Correspondance des fonctions

Fonction Ancienne Nouvelle _makepath _makepath_s _open _sopen_s _snprintf _snprintf_s _sopen _sopen_s _splitpath _splitpath_s ctime ctime_s fopen fopen_s fscanf fscanf_s getcwd _getcwd itoa _itoa localtime localtime_s lseek _lseek sprintf sprintf_s strcat strcat_s strcpy strcpy_s strimp _strimp strlw _strlw strncat strncat_s strncpy strncpy_s strtok strtok_s strupr _strupr ultoa _ultoa vsprintf vsprintf_s

102\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ VIII

CENTRE TECHNIQUE DU PAPIER

\ VIII.6 MEMORANDUM DES NOUVELLES FONCTIONALITES DE MORFI V8.0


Le rle de ce mmorandum est de consigner toutes les nouvelles fonctionnalits ajoutes au logiciel MorFi, mais uniquement sur sa partie visible par un oprateur. Ces modifications sont classes par estimation de limportance de leur impact sur un utilisateur. Remplacement de tous les lments graphiques (histogrammes, tableaux, matrice et distributions). Les couleurs de tous ces lments sont paramtrables au sein du fichier dinterface. Voir chapitre \ IV.3.1.1 Mise en place des solutions Chart Director (page 40). Ajout du ruban. Ajout celui-ci des fonctionnalits Ouvrir , Enregistrer et Synthse . Laide est supprime. Le titre de la page est dsormais indiqu sur longlet. Voir chapitre \ IV.3.4 Le Ruban (page 52). Possibilit de dplacer les lments graphiques dun onglet slectionn via clic-droit sur celui-ci et indication de la destination. Ce mode ncessite au moins dtre rgleur. Voir chapitre \ IV.3.17 Dplacement des fentres (page 73) Amlioration significative de la fonctionnalit dimpression. Le mode portrait est prsent support en natif. Voir chapitre \ IV.3.11 Gestion de limpression (page 65). Linteraction avec le presse-papier est supporte en mode copie. Lutilisation du raccourci clavier CTRL+C ralise une capture dcran de la fentre de MorFi. Copier un lment via un clic droit sur celui-ci permet de le placer dans le presse-papier. Le mode Agrandi est galement support lors de la copie. Voir chapitre \ IV.3.16 Ajout de la fonction Copier (page 72). Possibilit dutiliser des raccourcis claviers : - F5 : Effectuer une mesure simple : Effectuer une mesure via le carrousel - F6 - F9 : Effectuer une synthse : Ouvrir - CTRL+O - CTRL+S : Sauvegarder - CTRL+P : Imprimer - CTRL+T : Passer en mode Oprateur - CTRL+R : Passer en mode Rgleur - CTRL+M : Passer en mode Maintenance - CTRL+C : Copier la zone cran Voir chapitre \ IV.3.15 Ajouts de raccourcis clavier (page 71). Possibilit dintroduire un bitmap sur les lments vides. Lactivation de cette fonction se fait en modifiant la cl path_logo dans la section Window . Il convient dindiquer le chemin relatif vers limage afficher. Seuls les bitmaps (*.bmp) sont supports. Voir chapitre \ IV.3.12 Gestion de llment vide (page 67). Bitmap modifiable en haut droite du ruban. Lactivation de cette fonction se fait en modifiant la cl path_logo dans la section Logo . Il convient dindiquer le chemin relatif vers limage afficher. Seuls les bitmaps (*.bmp) sont supports. Voir chapitre \ IV.3.9 Ajout dun logotype externe (page 64).

SIMONJOLIET 103\128

\2010

CENTRE TECHNIQUE DU PAPIER

Possibilit dimprimer ou non le fond des lments graphiques. Voir le chapitre \ IV.3.11 Gestion de limpression (page 65). Possibilit dafficher la matrice sur deux fentres graphiques, si le mode Agrandi est slectionn au clic droit sur la matrice et si llment suivant est vide (hors zones 3 et 6). Ce mode ncessite au moins dtre rgleur. Voir le chapitre \ IV.3.18 Gestion dun lment double fentre (page 74) et lannexe \ VIII.9 Procdure dajout dun lment double fentre (page 109). Ajout dicnes dans les menus. Ajout des fonctionnalits dimpression et de copie dans le menu fichier. Voir chapitre \ IV.3.14 Rendu dynamique de la barre de menu (page 70). Suppression de laide lorsquelle tait prsente.

104\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ VIII

CENTRE TECHNIQUE DU PAPIER

\ VIII.7 STRUCTURE DU FICHIER DINTERFACE


La nouvelle interface de MorFi est hautement paramtrable. Le rle du fichier de configuration Interface.ini est dexternaliser tous ces lments. Pour plus dinformations sur lutilisation de ce fichier, voir chapitre \ IV.3.6 Cration dun fichier de configuration (page 58) du mmoire. Section [Localisation] Rle : stocke le chemin relatif du fichier de localisation et la langue utilise. Section [General] Rle : stocke les coordonnes gnrales (marges) de la fentre principale. Section [Commands] Rle : stocke les coordonnes X et Y et hauteur/largeur (L/H) de la bote de commandes. Section [Controls] Rle : stocke les coordonnes X et Y et hauteur/largeur (L/H) de la bote de contrles. Section [Family] Rle : stocke les coordonnes X et Y et hauteur/largeur (L/H) de la bote de la famille. Section [References] Rle : stocke les coordonnes X et Y et hauteur/largeur (L/H) de la bote de rfrences. Section [ProgressStatus] Rle : stocke les coordonnes X et Y et hauteur/largeur (L/H) de la bote contenant la barre de progression et de statut. Section [Time] Rle : stocke les coordonnes X et Y et hauteur/largeur (L/H) de la bote contenant la date et lheure. Section [Tabs] Rle : stocke les coordonnes X et Y et hauteur/largeur (L/H) des onglets. Section [Logo] Rle : stocke le chemin relatif du bitmap du ruban. Section [Main] Rle : stocke les coordonnes X et Y du ruban. Section [Graphic_Colors] Rle : stocke les couleurs des enttes, des barres et des lignes. Section [BarChart_Area] Rle : stocke les marges des histogrammes. Section [LineChart_Area] Rle : stocke les marges des distributions. Section [Matrix_Area] Rle : stocke les marges des matrices. Section [Window] Rle : stocke le chemin relatif du bitmap de llment vide.

SIMONJOLIET 105\128

\2010

CENTRE TECHNIQUE DU PAPIER

\ VIII.8 PROCEDURE DE LOCALISATION DES FORMULAIRES


Le logiciel MorFi contient environ 1500 informations textuelles, potentiellement localiser. Le fait que ces lments soient cods en dur dans lancienne version est une forte contrainte pour la portabilit. Le rle de cette annexe est de gnraliser la localisation, partir des travaux dj raliss au cours de la mission. \ VIII.8.1. Ajout des entres dans le fichier de localisation

Dans cette tape, linformation prsente dans un champ de texte devra tre recopie dans le fichier de localisation. Si lidentifiant est doubl, il est ncessaire den crer un nouveau, qui devra tre dfini dans specif.h. Ces identifiants sont dfinis partir de 7000, comme le montre lextrait suivant :
#define ID_PRTCAPT 7002

Extrait de const.h Exemple dapplication sur le formulaire du mot de passe :

Voici la ligne dfinissant le LTEXT au-dessus du champ ddition :


LTEXT "Entrez votre mot de passe",ID_T_PASS,46,45,104,8

Extrait de Morfi.rc Il faut donc crer une entre nomme ID_T_PASS dans le fichier de localisation. Cette entre porte un numro didentifiant dans const.h :
#define ID_T_PASS 300

Extrait de const.h Nous fusionnons donc ces informations dans le fichier de localisation :
300;ID_T_PASS;Entrez votre mot de passe

Extrait de Localisation_Fr.csv Cet lment sera dynamiquement charg dans le tableau louverture du programme. Il sera ds lors accessible via notre fonction LoadStringLocal. Il existe 66 formulaires dans MorFi, chacun possdant entre 3 et 36 lments localiser. En estimant le nombre de mdian de champs par formulaire 14, nous estimerons le nombre de champs total 900 ; en estimant quune nouvelle entre est effectue en 30 secondes : . . : Nombre mdian de champs, estim 14

106\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ VIII

CENTRE TECHNIQUE DU PAPIER

: Nombre total de formulaires, fix 66 (initialement) : Dure moyenne dune modification, estime 30 secondes : Temps de modification la localisation Soit avec les paramtres imposs et estims, un cot horaire denviron 8h de travail. \ VIII.8.2. Liaison des lments de localisation avec le formulaire

Ensuite, il convient de modifier les informations textuelles des formulaires leur cration, en utilisant celles prsentes dans le fichier de localisation. Nous utiliserons pour cela la fonction LoadStringLocal(int in_Identifiant, char in/out_ChaineARcuprer, int in_TailleDeLaChane). Une fois la variable rcupre, nous lenvoyons en paramtre au contrle modifier lors de linitialisation du formulaire. Pour cela ces lments seront placs dans la boucle des messages, lors de lvnement dinitialisation :
switch (message){ case WM_INITDIALOG:

Extrait de imprim.c Puis nous effectuons les fonctions LoadStringLocal(), tout en modifiant llment associ. Exemple dapplication dans le formulaire dimpression :
LoadStringLocal(ID_PRTCAPT,chrgStr,90); SetWindowText(hDlg,chrgStr);

Extrait de imprim.c Nous voulons ici modifier le titre de la fentre. Remarque importante, le titre de la fentre tant systmatiquement cod en dur, il est ncessaire de dfinir de nouveaux identifiants pour tous les formulaires comme nous lavons vu prcdemment. Voici un nouvel exemple, le cas de la modification du texte du bouton de validation de ce mme formulaire :
LoadStringLocal(IDOK,chrgStr,90); SetDlgItemText(hDlg,IDOK,chrgStr);

Extrait de imprim.c Ce type de fonctionnement na rien de complexe ; il est par contre assez fastidieux mettre en place. Avec un nombre estim de 924 lments (MorFi v7.13.00sj), sachant que pour chaque formulaire, il est ncessaire dajouter certaines entres et que toutes les modifications nont pas lieu dans les mmes fonctions, la dure moyenne dune modification est estime : . . : Nombre de mdian de champs, estim 14 : Nombre total de formulaires, fix 66 : Dure moyenne dune modification, estime 90 secondes : Temps de modification linitialisation

Soit avec les paramtres imposs et estims, un cot horaire denviron 23h de travail.

SIMONJOLIET 107\128

\2010

CENTRE TECHNIQUE DU PAPIER

\ VIII.8.1.

Traduction en deux langues du fichier de localisation

Le nombre total de mots est estim 8000. Sachant que le fichier doit tre traduit en deux langues (anglais et allemand), il est possible deffectuer des devis auprs dagences de traduction. Voici ce quil en ressort : Traduction de 8000 mots en anglais amricain (domaine informatique) : Trois devis sont prsents : 780 pour une traduction professionnelle collaborative (deux traducteurs + un contrle qualit) 7 jours de dlai 499 pour une traduction professionnelle (un traducteur + un contrle qualit) 6 jours de dlai 240 pour une traduction automatique rvise (traduction automatique + correction manuelle) 5 heures de dlai Traduction de 8000 mots en allemand (domaine informatique) : Deux devis sont prsents : 1127 pour une traduction professionnelle collaborative (deux traducteurs + un contrle qualit) 7 jours de dlai 899 pour une traduction professionnelle (un traducteur + un contrle qualit) 6 jours de dlai Source : http:://www.translated.net/fr/

108\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ VIII

CENTRE TECHNIQUE DU PAPIER

\ VIII.9 PROCEDURE DAJOUT DUN ELEMENT A DOUBLE FENETRE


Pour permettre une meilleure lecture de certains lments graphiques et afin dviter de placer des lments vides lorsque cela nest pas ncessaire, il est prvu de permettre lagrandissement des lments sur deux positions, pour peu que llment suivant soit vide. Le rle de cette annexe est donc de permettre la rptabilit des travaux raliss lors de la prise en charge de la matrice sur deux fentres. Tous les extraits sont issus du fichier source graphwnd.c. Avant tout un tableau de boolens est ajout la source. Ce tableau deux dimensions permet de stocker lactivation ou non de lagrandissement.
BOOL extensionSta[CFG_k_NBMAX_PAGES_LAB][6]={FALSE};

Lactivation de lagrandissement se fait via le menu contextuel. Cet lment est de type CheckMenuItem, de sorte quil peut prendre deux tats en fonction du boolen que nous venons de voir :
CheckMenuItem(menu,ID_AGRANDIR,MF_BYCOMMAND|(extensionSta[nPageCour_G][no]?MF_CHECKED:MF_UNCHECKED));

La possibilit est dsactive lorsquun lment ne prend pas en charge lagrandissement.


if(GWND_k_TYPOBJ_SYNTHFIBR != nTypeObj_L) { EnableMenuItem(menu,ID_AGRANDIR,MF_BYCOMMAND | MF_GRAYED); }

Pour linstant, loption nest active que pour la Synthse Fibre. Observons prsent la rception du message envoy lors de la slection de ce menu :
case ID_AGRANDIR: for(no=0; ((no < CFG_k_NBMAX_FENETRES) && (hWnd != phWndGraph_G[no])); no++); extensionSta[nPageCour_G][no]=!extensionSta[nPageCour_G][no]; GWND_MenuSelection(puTabIDPages_C[nPageCour_G]); break;

A la rception, nous inversons le boolen, puis nous ractualisons la vue (par le biais de la fonction GWND_MenuSelection()). Nous savons par exemple dans le cas prsent quune fentre ne peut tre agrandie que si elle est suivie dun lment vide.
TimaY = dy; if(GWND_k_TYPOBJ_SYNTHFIBR == nTypeObj_L) { TimaX = dx; if((i != 2) && (i != 5)) { if(((pppnTabVisu_G[nPageCour_G][i+1][0]==GWND_k_TYPOBJ_VIDE))&&(extensionSta[nPageCour_G][i])) { TimaY = dy*2+4; } } SetWindowPos(phWndGraph_G[i],HWND_NOTOPMOST,x,y,dx,TimaY,SWP_NOZORDER | SWP_NOACTIVATE); }

Lors de la ractualisation de la fentre, nous crerons une exception linterception de llment synthse fibre (GWND_k_TYPOBJ_SYNTHFIBR). Dans ce cas nous testons si cet lment nest pas aux positions extrmes basses, soit 2 et 5 (pour 3 et 6 ; dans ces cas, llment ne peut pas tre agrandi). Ensuite nous testons : - Si llment suivant est un lment vide (pppnTabVisu_G[nPageCour_G][i+1][0]==GWND_k_TYPOBJ_VIDE) - Si lagrandissement est activ sur cette fentre (extensionSta[nPageCour_G][i])

SIMONJOLIET 109\128

\2010

CENTRE TECHNIQUE DU PAPIER

Si ces conditions sont respectes, la coordonne Y basse de la fentre de synthse fibre (notre matrice) est double. Elle occupera dsormais deux lments. Il faut prsent dsactiver laffichage de llment vide suivant lors dune telle configuration. Pour cela nous nous plaons lemplacement dinterception du message daffichage dun lment vide :
case GWND_k_TYPOBJ_VIDE: if (impr){ x1 = 100; y1 = 200; x2 = 900; y2 = 500;} if((fen!=0)&&(fen!=3)) { if (GWND_k_TYPOBJ_VIDEO == pppnTabVisu_G[nPageCour_G][fen-1][0]) { break; } if ((GWND_k_TYPOBJ_SYNTHFIBR == pppnTabVisu_G[nPageCour_G][fen-1][0])) { if(extensionSta[nPageCour_G][fen-1]) { goto SYNTHFIBR; break; } } } EffaceZoneEcran(hDC,x1,y1,x2,y2,BLANC); AfficheLogoElementVide(hDC,x1,y1,x2,y2,fen,impr); break;

Si llment vide est aux positions extrmes hautes, rien ne peut le remplacer, ce qui est normal puisquaucun lment ne peut le prcder verticalement. Nous affichons alors le bitmap. Nous sortons galement de linstruction si llment prcdent est une vido. Dans notre cas prsent, puisque llment prcdent est une synthse fibre, nous sommes redirigs vers lvnement SYNTHFIBR (goto SYNTHFIBR). Cet vnement est plac dans lemplacement dinterception du message daffichage dune synthse fibre:
case GWND_k_TYPOBJ_SYNTHFIBR: SYNTHFIBR: if (pppnTabVisu_G[nPageCour_G][fen][0]==GWND_k_TYPOBJ_VIDE) { GetWindowRect(phWndGraph_G[fen],&r); y1=y1-(r.bottom-r.top)-4; } else { break; } } [...]

Arriv lvnement SYNTHFIBR, contrlons que llment actuel est vide. Cela ne peut arriver que si la fonction a t redirige via le goto SYNTHFIBR, puisquen temps normal, le type dobjet est forcment une synthse fibre. Dans ce cas donc, nous modifions la valeur de la coordonne y1 afin de copier dans llment vide la partie basse de limage synthse fibre. Note : lors du dplacement dun lment, le boolen associ lactivation de lagrandissement est lui aussi dplac. Voir annexe \ VIII.17.5 Fonction dinterversion des lments graphiques (page 120). Toutes ces oprations doivent tre rptes chaque lment pour lequel laffichage sur deux fentres est autoris.

110\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ VIII

CENTRE TECHNIQUE DU PAPIER

\ VIII.10

PROCEDURE DE DEMONSTRATION DE MORFI V8.0

Cette procdure a pour but de montrer les nouvelles fonctionnalits propres MorFi v8.0. Elle consiste raliser une suite de daction tout en les expliquant un public (type client).

Elle ncessite quelques logiciels et autres paramtres : - Microsoft Windows XP - MorFi v8.0 - Activation de ClearType - Installation des polices Calibri et Arial Narrow (CALIBRIB.TTF, CALIBRII.TTF et ARIALNB.TTF) - Installation de PDF Creator v1.02 - Installation dAcrobat Reader v9.3.4

Spcifique MorFi : - Prsence des fichiers 25p_SW.mlb et 100p_SW.mlb - Noms des onglets : Histogrammes , Fibres , Tableaux et Bchettes . - Agencement de longlet Histogramme : Tableau de Synthse , StatMorf , Vide , Synthse Fibres , Distribution Fibres et Longueur des Fibres & Fines . - Agencement de longlet Bchettes : Distribution Fibres , Tableau de Synthse , Synthse Fibres , Vido , Vide et Longueur des Fibres & Fines .

Voici la marche suivre : - Lancer MorFi. Montrer le nouveau Splash Screen - Passer en maintenance en utilisant CTRL+M - Dplacer Longueur Fibres & Fines de la position 6 la position 5 par menu contextuel - Dplacer Synthse Fibres de la position 4 la position 2 par menu contextuel - Agrandir Synthse Fibres par menu contextuel - Passer en Oprateur en utilisant CTRL+T - Ouvrir 25p_SW.mlb en utilisant CTRL+O - Copier limage de la matrice, et la coller dans un nouveau document WordPad - Ouvrir 100p_SW.mlb en utilisant CTRL+O - Lancer limpression en utilisant CTRL+P (avec PDF Creator), cocher limpression du fond - Afficher le document imprim avec Acrobat Reader - Cliquer sur longlet Tableaux - Cliquer sur longlet Fibres - Passer en mode rgleur en utilisant CTRL+R - Aller dans Paramtres > Pages graphiques - Renommer Fibres en Fibres & Bchettes , puis valider - Cliquer sur longlet Fibres - Aller dans Paramtres > Pages graphiques - Remplacer le Tableau de Synthse (Fentre n2) par un lment vide - Dplacer Synthse Fibres de la position 3 la position 2 - Agrandir Synthse Fibres par menu contextuel - Lancer lanalyse en utilisant F5 - A la fin de lanalyse, la dmonstration est termine.

SIMONJOLIET 111\128

\2010

CENTRE TECHNIQUE DU PAPIER

\ VIII.11

PLANCHE DE PROPOSITION DE LOGOTYPES

112\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ VIII

CENTRE TECHNIQUE DU PAPIER

\ VIII.12

RENDU INITIAL DE MORFI

\ VIII.12.1. Maquette initiale


MorFi
Fichier 1 2 Paramtres 3 4 Vido Mode Maintenance Aide Systme Date/heure Etat actuel

Une famille

Rference

Une rfrence

Oprateur

Un oprateur

Carrousel

Marche

\ VIII.12.1. Rendu initial

SIMONJOLIET 113\128

\2010

CENTRE TECHNIQUE DU PAPIER

\ VIII.13

RENDU FINAL DE MORFI

\ VIII.13.1. Maquette finale


MorFi
Fichier Paramtres Vido Mode Maintenance Famille
Carrousel Marche

Aide

Menu

Systme Une rfrence Un oprateur Date Une date Logo

Une famille

Rfrence Oprateur

Heure Une heure Un tat

Onglet 1

Onglet 2

Onglet 3

Onglet4

\ VIII.13.2. Rendu final

114\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ VIII

CENTRE TECHNIQUE DU PAPIER

\ VIII.14

UNE IMPRESSION SOUS MORFI 7.13.00

SIMONJOLIET 115\128

\2010

CENTRE TECHNIQUE DU PAPIER

\ VIII.15

UNE IMPRESSION SOUS MORFI 8.0

116\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ VIII

CENTRE TECHNIQUE DU PAPIER

\ VIII.16

BIBLIOTHEQUE LOGICIELLE

La ralisation de ce projet, de par sa nature trs vaste, a ncessit un grand nombre de logiciels : Systmes dexploitation : Microsoft Windows XP sp3 Microsoft Windows 7 Interface de dveloppement : Microsoft Visual Studio 6.0 dition entreprise Microsoft Visual C++ 2008 Express Edition Microsoft Visual Studio 2010 Express Edition, Professional Edition et Ultimate Edition Windiff v6.1 Editeurs de texte et de structures de donnes Notepad++ v5.7 Microsoft Excel 2003 et 2010 CSVed v2.1.2b Librairies connexes : Chart Director v5.0 Microsoft Windows 7 SDK Gestion de projet, dition des documents et prsentations : Microsoft Project 2007 et 2010 Microsoft Word 2003 et 2010 Microsoft PowerPoint 2003, 2010 et visionneuse PowerPoint 2010 Acrobat Reader v9.3.4 PDF Creator v1.0.2 Oracle Virtual Box v3.2.8 for Windows Host Recherches graphiques GIMP (Retouche photographique) v2.6.10 Adobe Illustrator (Dessin vectoriel) CS5 Inkscape (Dessin vectoriel) v0.48 IconFX (Editeur dicnes) v1.6.4 Modlisation Microsoft Visio 2010 SIMONJOLIET 117\128

\2010

CENTRE TECHNIQUE DU PAPIER

\ VIII.17

CODES SOURCES

\ VIII.17.1. Structure de donnes du fichier dinterface


typedef struct tagELEMENT { int X; int Y ; int L ; int H ; } ELEMENT; typedef struct tagPOSITION { int X; int Y ; } POSITION ; typedef struct tagGRAPHIQUE { POSITION Haut ; POSITION Bas ; int Couleur ; } GRAPHIQUE ; typedef struct tagMORFI_INTERFACE { ELEMENT Family; ELEMENT Onglets; ELEMENT Reference; ELEMENT Time; ELEMENT Controls; ELEMENT Status; ELEMENT Commandes ; ELEMENT Logo ; GRAPHIQUE Histogramme ; GRAPHIQUE Distribution ; GRAPHIQUE Matrice ; int Taille_Horizontale ; int Taille_Verticale ; int Espacement_Horizontal ; char cheminLogoRuban[90] ; char cheminLogoFenetre[90] ; BOOL imprimeFond ; int couleurHeader ; } MORFI_INTERFACE ;

Extrait de specif.h \ VIII.17.2. Fonction de Gestion de llment vide


void AfficheLogoElementVide(HDC hDC,int x1,int y1,int x2,int y2,int fen,BOOL impr) { HBITMAP hBitmapVide; HDC hDCMem; BITMAP bBitmapVide; hBitmapVide=(HBITMAP)LoadImage(NULL,Intfce_G.cheminLogoFenetre,IMAGE_BITMAP,0,0,LR_LOADFROMFILE); GetObject( hBitmapVide, sizeof(bBitmapVide), &bBitmapVide ); hDCMem = CreateCompatibleDC(hDC); SelectObject(hDCMem, hBitmapVide);

118\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ VIII

CENTRE TECHNIQUE DU PAPIER

BitBlt(hDC,x1+((x2-x1)-bBitmapVide.bmWidth)/2,y1+((y2-y1)bBitmapVide.bmHeight)/2,(int)bBitmapVide.bmWidth,(int)bBitmapVide.bmHeight,hDCMem,0,0,SRCCOPY); DeleteObject(hDCMem); DeleteObject(hBitmapVide); }

\ VIII.17.3. Partie Localisation \ VIII.17.3.1. Chargement des tableaux


BOOL _ChargeStructureLocalisation(void) { errno_t OuvertureErreur; FILE * PointeurFichier = NULL; char bufferA[ELEMENT_CLECARACTER+ELEMENT_VALCARACTER]; char bufferB[ELEMENT_CLECARACTER+ELEMENT_VALCARACTER]; char LocalisationFile[90]={0}; int numLigne=0; int vli,vlj,vlk; GetPrivateProfileString (TEXT("Localisation"), TEXT("Path_Localisation"), TEXT(".\\ResCommunes\\Langue\\Localisation_"), bufferA, 90, TEXT(FileInterface)); GetPrivateProfileString (TEXT("Localisation"), TEXT("Language"), TEXT("En"), bufferB, 90, TEXT(FileInterface)); sprintf(LocalisationFile,"%s%s.csv",bufferA,bufferB); if((OuvertureErreur=fopen_s(&PointeurFichier, LocalisationFile,"r"))==0) { while (fgets(bufferA, ELEMENT_STRINGTABLE, PointeurFichier) != NULL) { if(strlen(bufferA)>2) { if((bufferA[0]=='1')||(bufferA[0]=='2')||(bufferA[0]=='3')|| (bufferA[0]=='4')||(bufferA[0]=='5')||(bufferA[0]=='6')|| (bufferA[0]=='7')||(bufferA[0]=='8')||(bufferA[0]=='9')) { Idt[numLigne] = atoi(strtok(bufferA,";")); strcpy(bufferB,strtok(NULL,";")); strcpy(Val[numLigne],strtok(NULL,";")); Val[numLigne][strlen(Val[numLigne])-1]='\0'; //dtection des caractres spciaux for(vlj=0;vlj<=ELEMENT_VALCARACTER;vlj++) { if(Val[numLigne][vlj]=='\\') { // \n (retour ligne) if (Val[numLigne][vlj+1]=='n') { Val[numLigne][vlj]='\n'; for(vlk=vlj+1;vlk<=ELEMENT_VALCARACTER-1;vlk++) { Val[numLigne][vlk]=Val[numLigne][vlk+1]; } } // \t (tabulation) if (Val[numLigne][vlj+1]=='t') { Val[numLigne][vlj]='\t'; for(vlk=vlj+1;vlk<=ELEMENT_VALCARACTER-1;vlk++) { Val[numLigne][vlk]=Val[numLigne][vlk+1]; } } } } numLigne++; } } for(vli=0;vli<=ELEMENT_VALCARACTER;vli++) { bufferA[vli]=0; }

SIMONJOLIET 119\128

\2010

CENTRE TECHNIQUE DU PAPIER

} fclose(PointeurFichier); } else { sprintf(bufferA,"MorFi fails to open the localization profile. Please check if the file %s is still on the right place.",LocalisationFile); MessageBox(hWndPrinc_G,bufferA,"Localization error",MB_OK | MB_ICONERROR); } return FALSE; }

\ VIII.17.3.2. LoadStringLocal
BOOL LoadStringLocal(int inCle, char *outVal,int sizeOfBuffer) { int vli=0; int vlj=0; for(vli=0;vli<=ELEMENT_STRINGTABLE;vli++) { if(inCle==Idt[vli]) { strcpy(outVal,Val[vli]); Val[vli][sizeOfBuffer]='\0'; return FALSE; } } return FALSE; { strcpy(outVal,"\0"); sprintf(outVal,"The element #%d isn't in the localization file. Abording.",inCle); MessageBox(hWndPrinc_G,outVal,"Missing a value", MB_OK | MB_ICONERROR); return TRUE; } }

\ VIII.17.4. Fonction de capture


void CaptureScreen(HWND hWndMain, long Left, long Top, long Width, long Height) { HDC srcDC; HDC trgDC; HBITMAP BMPHandle; DEVMODE dm; dm.dmSize = 5; srcDC = GetDC(NULL); trgDC = CreateCompatibleDC(GetDC(hWndMain)); BMPHandle = CreateCompatibleBitmap(srcDC, Width, Height); SelectObject(trgDC, BMPHandle); BitBlt(trgDC, 0, 0, Width, Height, srcDC, Left, Top, SRCCOPY); OpenClipboard(hWndMain); EmptyClipboard(); SetClipboardData(CF_BITMAP, BMPHandle); CloseClipboard(); DeleteDC(trgDC); DeleteObject(BMPHandle); DeleteObject(srcDC); }

\ VIII.17.5. Fonction dinterversion des lments graphiques


Deplacement: for(no=0; ((no < CFG_k_NBMAX_FENETRES) && (hWnd != phWndGraph_G[no])); no++); //Position originale dans position temporaire for(vli=0;vli<=5;vli++) { SWobjt[vli]=pppnTabVisu_G[nPageCour_G][no][vli]; SWdpmt[no]=extensionSta[nPageCour_G][no]; } //Destination dans position originale

120\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ VIII

CENTRE TECHNIQUE DU PAPIER

for(vli=0;vli<=5;vli++) { pppnTabVisu_G[nPageCour_G][no][vli]=pppnTabVisu_G[nPageCour_G][DestPosition][vli]; extensionSta[nPageCour_G][no]=extensionSta[nPageCour_G][DestPosition]; } //Position temporaire dans Destination for(vli=0;vli<=5;vli++) { pppnTabVisu_G[nPageCour_G][DestPosition][vli]=SWobjt[vli]; extensionSta[nPageCour_G][DestPosition]=SWdpmt[no]; } GWND_MenuSelection(puTabIDPages_C[nPageCour_G]); CFG_DemandeSauveConfiguration(hWndPrinc_G); break;

\ VIII.17.6. Fichier XML de liaison aux common-controls


<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="CTP.TechPap.MorFi" type="win32" /> <description>Fiber analysis software.</description> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency> </assembly>

SIMONJOLIET 121\128

\2010

CENTRE TECHNIQUE DU PAPIER

\ VIII.18
Version 8.0

CORRESPONDANCE DES ELEMENTS


Version 7.13

122\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ VIII

CENTRE TECHNIQUE DU PAPIER

1.

CHARTEGRAPHIQUE
APPLIQUE AUX PRODUITS LOGICIELS

SIMONJOLIET 123\128

\2010

CENTRE TECHNIQUE DU PAPIER

\ ENJEUX
Dans le cadre de luniformisation dune gamme de produit afin doffrir un catalogue cohrent et fdr, la charte graphique du CTP a t adapte afin de se voir applicable aux logiciels. Les lments suivants fixent une dmarche prendre en compte lors du dveloppement de linterface homme-machine dun logiciel du CTP.

124\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ VIII

CENTRE TECHNIQUE DU PAPIER

\ UN LOGOTYPE
Un logiciel est caractris par son logotype. Celui-ci est vu ds louverture par le biais du splash sceen . Pour la confection dun logotype, la charte graphique du CTP doit tre respecte. Les lments non-textuels seront dfinis sur deux couleurs uniquement. Le chevauchement dlments distinct est prohib

\ UNE ICNE
Licne dun logiciel doit comporter la premire lettre du logotype associ. Un lment rappelant ce logotype peut accompagner cette icne. Exemple :

24 bits 256x256px 48x48px 32x32px 16x16px

8 bits 256x256px 48x48px 32x32px 16x16px

4 bits 256x256px 48x48px 32x32px 16x16px


SIMONJOLIET 125\128

\2010

CENTRE TECHNIQUE DU PAPIER

Le fichier *.ico doit possder les dimensions indiques. Les profondeurs de couleurs seront 24 bits, 8 bits et 4 bits. Dans ces deux dernier cas, le non-respect des couleurs est tolr.

\ UN SPLASH SCREEN
Le splash screen doit comporter le logotype du logiciel, le numro de version, ainsi que le logotype du CTP.

LOGOTYPE
Numro de version

\ DES POLICES
Les polices autorises sont : Pour les graphiques et les lgendes, il est recommand dutiliser la police de caractres Calibri en gras.
abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890

Pour les gros titres, il est recommand dutiliser la police de caractre Arial Narrow en gras.
abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890

126\128 \ SIMONJOLIET \ MMOIRE DE STAGE

\ VIII

CENTRE TECHNIQUE DU PAPIER

\ DES BOTES DE DIALOGUES


Afin damliorer lexprience utilisateur, un logiciel doit se voir intgr dans le systme dexploitation sur le plan graphique. Il est recommand dajouter des lments graphiques ces botes de dialogues.

\ UNE INTERFACE UTILISATEUR


Les logiciels se doivent, lorsque cela est possible et justifi, de respecter une interface compose : - Dun ruban - Donglets - Dun logotype paramtrable
Logiciel type
Fichier Edition Affichage Aide A propos...

Logotype
Onglet 1 Onglet 2 Onglet 3 Onglet4

En-tte

Fentre principale

Les icnes du ruban seront dune taille suprieure ou gale 32x32px.


SIMONJOLIET 127\128

\2010

CENTRE TECHNIQUE DU PAPIER

ZUSAMMENFASSUNG
Ziel dieses Berichts ist es, zu analysieren, wie die Mensch-Maschine-Schnittstelle einer Software zur morphologischen Analyse von Papierfasern neu konfiguriert werden kann. Um dieses Ziel zu erreichen, mssen die Auswirkungen erforscht werden, die ein solches Vorgehen auf ein System hat, und zwar durch eine objektive Analyse der verwendeten Mittel. Wir konzentrieren uns daher auf das technische Konzept, das Kommunikation, Algorithmen, strukturierte Programmierung, Grafik-Design, Qualitts- und Projektmanagement miteinander vereint. Die Reproduzierbarkeit der durchgefhrten Arbeiten zum Zweck einer Vereinheitlichung eines Katalogs von Softwareprodukten wird durch diesen Bericht ermglicht.

RSUM
Ce mmoire propose dtudier le remodelage de lInterface Homme-Machine dun logiciel danalyse morphologique des fibres du papier. La ralisation de cette mission est conditionne par la recherche des implications que soulve une telle mise en uvre sur un systme, par le biais dune analyse objective des moyens utiliss. Nous nous focaliserons ainsi sur la dmarche technique, celle-ci regroupant communication, algorithmique, programmation structure, cration graphique, qualit et gestion de projet. La reproductibilit des travaux effectus dans une optique duniformisation dun catalogue de produits logiciels est assure par le prsent mmoire.

SUMMARY
This report attempts to study the remodeling of the human-machine interface of a software designed for the morphological analysis of the pulp fibers. Achieving this mission relies on investigating the implications brought by this implementation on a system, through an objective analysis of the means used. We will focus on the technical approach as well; it brings together communications, algorithms, structured programming, graphic design, quality and project management. The reproducibility of this work within a standardization of a catalog of software products is guaranteed by this report.

128\128 \ SIMONJOLIET \ MMOIRE DE STAGE

Vous aimerez peut-être aussi