• Pas le temps mais...

    **
    Je viens de creer un theme "Geek et travail" ou je vais un peu parler boulot, parfois ca n'aura pas beaucoup de sens pour les gens sains d'esprit, mais pour les autres, ce devrait etre assez comique
    **

    Je viens de tomber sur une des plus belles fonctions que j'ai jamais vues !!!
    Attention, la fonction drawPolyline() en provenance directe du Japon...

        private void drawPolyline (ImsObject obj)
        {
            double prev_x = 0.0,prev_y = 0.0;
            boolean first = true;
            Vector property = obj.getAssociation ("has_property_of");
           
            if ( property != null && property.size () > 0 )
            {
                for ( Enumeration e = property.elements (); e.hasMoreElements (); )
                {
                    AssociationInstance a = (AssociationInstance) e.nextElement ();
                    TypePair obj2 = (TypePair) a.elementAt (3);  //roleObject[2]
                    TypePair obj3 = (TypePair) a.elementAt (4);  //roleObject[3]

                    //for( int i = 2; i < a.size(); i++ )
                    {
                        if (obj2.item.equals ("width"))
                        {
                            pointwidth = obj3.toDouble ();
                        }
                        else if (obj2.item.equals ("colour"))
                        {
                            double refdir[] = new double[3];
                            refdir[0] = refdirx;
                            refdir[1] = refdiry;
                            refdir[2] = 0.0;
                            ImsSet v = (ImsSet) obj3.item;
                            Red = ( (TypePair)v.elementAt (0)).toDouble ();
                            Green = ( (TypePair)v.elementAt (1)).toDouble ();
                            Blue = ( (TypePair)v.elementAt (2)).toDouble ();
                            //this.addLine(x1,y1,x2,y2,width,new Color((int)R,(int)G,(int)B));
                            setColor (Red,Green,Blue);
                        }  // end else
                    } //end block
                }  //end for (Enumer...
            }
            //read points
            {
                Vector assembly = obj.getAssociation ("is_assembled_from");
               
                if ( assembly != null && assembly.size () > 0 )
                {
                    for ( Enumeration e = assembly.elements (); e.hasMoreElements (); )
                    {
                        AssociationInstance a = (AssociationInstance) e.nextElement ();
                        for ( int i = 2; i < a.size (); i++ )
                        {
                            TypePair tp = (TypePair) a.elementAt (i);
                            if ( tp.type == ImsObject.SET )
                            {
                                ImsSet v = (ImsSet) tp.item;
                                for ( int j = 0; j < v.size (); j++ )
                                {
                                    TypePair tp1 = (TypePair) v.elementAt (j);
                                    ImsObject setObject = getObjectByName ( (String) (tp1.item));
                                    {
                                        //drawing points
                                        Vector property1 = setObject.getAssociation (
                                        "has_property_of");
                                        if ( property1 != null && property1.size () > 0 )
                                        {
                                            for ( Enumeration e1 = property1.elements (); e1.hasMoreElements (); )
                                            {
                                               
                                                AssociationInstance a1 = (AssociationInstance) e1.nextElement ();
                                                TypePair obj2 = (TypePair) a1.elementAt (3);  //roleObject[2]
                                                TypePair obj3 = (TypePair) a1.elementAt (4);  //roleObject[3]
                                                //for( int i = 1; i < a1.size(); i++ )
                                                {
                                                    if (obj2.item.equals ("location"))
                                                    {
                                                        ImsSet v1 = (ImsSet) obj3.item;
                                                        x1 = ( (TypePair)v1.elementAt (0)).toDouble ();
                                                        y1 = ( (TypePair)v1.elementAt (1)).toDouble ();
                                                        CalculateMinMax (x1,y1);
                                                        if (first)
                                                        {
                                                            first = false;
                                                            prev_x = x1;
                                                            prev_y =y1;
                                                        }
                                                        else
                                                        {
                                                            addLine (obj.getName (), x1, y1, prev_x,
                                                             prev_y,pointwidth,new Color ( (float)Red,
                                                             (float)Green, (float)Blue));
                                                            prev_x = x1;
                                                            prev_y =y1;
                                                        }
                                                    }
                                                }
                                            }
                                        }

                                        //drawing points

                                    }
                                }
                            }
                            else

                            {
                                ImsObject roleObj = getObjectByName ( (String) (tp.item));

                                {
                                    //drawing points
                                    Vector property1 = roleObj.getAssociation (
                                    "has_property_of");

                                    if ( property1 != null && property1.size () > 0 )

                                    {
                                       
                                        for ( Enumeration e1 = property1.elements
                                         (); e1.hasMoreElements (); )

                                        {
                                            AssociationInstance a1 =
                                             (AssociationInstance) e1.nextElement ();
                                            TypePair obj2 = (TypePair) a1.elementAt (3);  //roleObject[2]
                                            TypePair obj3 = (TypePair) a1.elementAt (4);  //roleObject[3]

                                            //for( int i = 1; i < a1.size(); i++ )


                                            {
                                                if (obj2.item.equals ("location"))


                                                {
                                                    ImsSet v = (ImsSet) obj3.item;
                                                    x1 = ( (TypePair)v.elementAt (0)).toDouble ();
                                                    y1 = ( (TypePair)v.elementAt (1)).toDouble ();
                                                    CalculateMinMax (x1,y1);
                                                    if (first)
                                                    first = false;
                                                    else


                                                    {
                                                        addLine (obj.getName (), x1, y1, prev_x,
                                                         prev_y,pointwidth,new Color ( (float)Red,
                                                         (float)Green, (float)Blue));
                                                        prev_x = x1;
                                                        prev_y =y1;
                                                    }
                                                }
                                            }
                                        }
                                    }

                                    //drawing points
                                }
                            }
                        }
                    } //for (Enumeration...
                }
            }
        }

    La bonne nouvelle c'est que ce code ne m'interesse pas pour ce que j'ai a faire, mais je l'ai trouve en cherchant d'autres fonctions souterraines du programme. Ah au fait pour les petits malins (il y en a surement) qui vont me dire "OK, c'est moche, mais si la fonction eset bien documentee, ca passe", je vous rassure tout de suite, il n'y a meme pas une javadoc...
    Tiens, je donne toute mon estime a celui qui a le courage de lire ca et de me dire ce que ca fait (a part tracer une (poly?)ligne). Quand je vois un bout de code entoure par 4 boucle for et 2 if, je me dis que le monde est malade...




  • Commentaires

    1
    Xav
    Mercredi 30 Juin 2004 à 11:13
    (ôô)
    Bah je sais maintenant sur quelles pages de ton blogg je dois pas traîner. Désolé mais voir ces lignes de code ne me font pas fantasmer car c'est bien là la caractéristique du geek si j'ai bien compris: s'extasier devant ça! Moi ça me rapelle plutot Lulu, pour fantasmer il ya mieux! A+
    Suivre le flux RSS des commentaires


    Ajouter un commentaire

    Nom / Pseudo :

    E-mail (facultatif) :

    Site Web (facultatif) :

    Commentaire :