void UmlPackage::html(Q3CString pfix, unsigned int rank, unsigned int level) { define(); if (stereotype() == "profile") chapter("Profile", pfix, rank, "profile", level); else chapter("Package", pfix, rank, "package", level); Q3CString s = description(); if (!s.isEmpty()) { fw.write("<p>"); writeq(s); fw.write("<br /></p>"); } bool ul = FALSE; s = cppNamespace(); if (!s.isEmpty()) { fw.write("<p></p><ul>\n"); ul = TRUE; fw.write("<li>C++ namespace : "); writeq(s); fw.write("</li>\n"); } s = javaPackage(); if (!s.isEmpty()) { if (! ul) fw.write("<p></p><ul>"); ul = TRUE; fw.write("<li>Java package : "); writeq(s); fw.write("</li>\n"); } if (ul) fw.write("</ul>\n"); write_dependencies(); UmlDiagram * d = associatedDiagram(); if (d != 0) { fw.write("<p>Diagram : "); d->write(); fw.write("</p>\n"); } write_properties(); write_children(pfix, rank, level); unload(FALSE, FALSE); }
// write a widget and all it's children: void Fl_Type::write() { int level = 0; for (Fl_Type* p = parent; p; p = p->parent) level++; write_indent(level); write_word(type_name()); write_word(name()); write_open(level); write_properties(); write_close(level); if (!is_parent()) return; // now do children: write_open(level); Fl_Type *child; for (child = first_child; child; child = child->next_brother) child->write(); write_close(level); }
void UmlActivityPartition::html(Q3CString pfix, unsigned int rank, unsigned int level) { define(); chapter("Activity partition", pfix, rank, "activitypartition", level); Q3CString s = description(); if (!s.isEmpty()) { fw.write("<p>"); writeq(s); fw.write("<br /></p>"); } if (isDimension()) fw.write((isExternal()) ? "<p>is dimension, is external</p>\n" : "<p>is dimension</p>\n"); else if (isExternal()) fw.write("<p>is external</p>\n"); if (represents() != 0) { fw.write("<p>represents "); represents()->write(); fw.write("</p>"); } write_dependencies(); UmlDiagram * d = associatedDiagram(); if (d != 0) { fw.write("<p>Diagram : "); d->write(); fw.write("</p>\n"); } write_properties(); write_children(pfix, rank, level); unload(FALSE, FALSE); }
void UmlState::html(Q3CString pfix, unsigned int rank, unsigned int level) { define(); chapter((parent()->kind() == aClassView) ? "StateMachine" : "State", pfix, rank, "state", level); Q3CString s = description(); if (!s.isEmpty()) { fw.write("<p>"); writeq(description()); fw.write("<br /></p>"); } UmlState * ref = reference(); if (ref != 0) { fw.write("<p>References "); ref->write(); fw.write("</p>"); } else { if (isActive()) fw.write("<p>Active state</p>\n"); UmlOperation * beh = specification(); if (beh != 0) { fw.write("<p>Implements "); beh->write(); fw.write("</p>"); } Q3CString scpp, sjava; s = entryBehavior(); scpp = cppEntryBehavior(); sjava = javaEntryBehavior(); if (!s.isEmpty() || !scpp.isEmpty() || !sjava.isEmpty()) { fw.write("<p>Entry Behavior :</p><ul>"); if (!s.isEmpty()) { fw.write("<li>OCL : <pre>\n"); writeq(s); fw.write("</pre></li>"); } if (!scpp.isEmpty()) { fw.write("<li>C++ : <pre>\n"); writeq(scpp); fw.write("</pre></li>"); } if (!sjava.isEmpty()) { fw.write("<li>Java : <pre>\n"); writeq(sjava); fw.write("</pre></li>"); } fw.write("</ul>"); } s = exitBehavior(); scpp = cppExitBehavior(); sjava = javaExitBehavior(); if (!s.isEmpty() || !scpp.isEmpty() || !sjava.isEmpty()) { fw.write("<p>Exit Behavior :</p><ul>"); if (!s.isEmpty()) { fw.write("<li>OCL : <pre>\n"); writeq(s); fw.write("</pre></li>"); } if (!scpp.isEmpty()) { fw.write("<li>C++ : <pre>\n"); writeq(scpp); fw.write("</pre></li>"); } if (!sjava.isEmpty()) { fw.write("<li>Java : <pre>\n"); writeq(sjava); fw.write("</pre></li>"); } fw.write("</ul>"); } s = doActivity(); scpp = cppDoActivity(); sjava = javaDoActivity(); if (!s.isEmpty() || !scpp.isEmpty() || !sjava.isEmpty()) { fw.write("<p>Do activity :</p><ul>"); if (!s.isEmpty()) { fw.write("<li>OCL : <pre>\n"); writeq(s); fw.write("</pre></li>"); } if (!scpp.isEmpty()) { fw.write("<li>C++ : <pre>\n"); writeq(scpp); fw.write("</pre></li>"); } if (!sjava.isEmpty()) { fw.write("<li>Java : <pre>\n"); writeq(sjava); fw.write("</pre></li>"); } fw.write("</ul>"); } } UmlStateDiagram * d = associatedDiagram(); if (d != 0) { fw.write("<p>Diagram : "); d->write(); fw.write("</p>"); } write_properties(); write_children(pfix, rank, level); unload(FALSE, FALSE); }
void UmlOperation::html(QByteArray, unsigned int, unsigned int) { define(); fw.write("<table><tr><td><div class=\"element\">Operation <b>"); writeq(name()); fw.write("</b></div></td></tr></table>"); QByteArray s = description(); if (! s.isEmpty()) { fw.write("<p>"); if (! javaDecl().isEmpty()) gen_java_decl(s, TRUE); else if (! phpDecl().isEmpty()) gen_php_decl(s, TRUE); else if (! pythonDecl().isEmpty()) gen_python_decl(s, TRUE); else gen_cpp_decl(s, TRUE); fw.write("<br /></p>"); } fw.write("<p>Declaration :</p><ul>"); fw.write("<li>Uml : "); gen_uml_decl(); fw.write("</li>"); s = cppDecl(); if (!s.isEmpty()) { fw.write("<li>C++ : "); gen_cpp_decl(s, FALSE); fw.write("</li>"); } s = javaDecl(); if (!s.isEmpty()) { fw.write("<li>Java : "); gen_java_decl(s, FALSE); fw.write("</li>"); } s = phpDecl(); if (!s.isEmpty()) { fw.write("<li>Php : "); gen_php_decl(s, FALSE); fw.write("</li>"); } s = pythonDecl(); if (!s.isEmpty()) { fw.write("<li>Python : "); gen_python_decl(s, FALSE); fw.write("</li>"); } fw.write("</ul>"); annotation_constraint(); write_properties(); unload(FALSE, FALSE); }
void UmlDiagram::html(Q3CString, unsigned int, unsigned int) { UmlCom::message(name()); define(); Q3CString s; s.setNum(getIdentifier()); s = "fig" + s + ((svg) ? ".svg" : ".png"); saveIn(directory + s); if (svg) { fw.write("<p align=\"center\"><embed src=\""); fw.write(s); fw.write('"'); s = directory + s; FILE * fp = fopen((const char *) s, "r"); if (fp != 0) { char line[256]; (void) fgets(line, sizeof(line) - 1, fp); // <?xml version="1.0" ... (void) fgets(line, sizeof(line) - 1, fp); // <!-- Created with Bouml ... (void) fgets(line, sizeof(line) - 1, fp); // <!DOCTYPE svg PUBLIC ... (void) fgets(line, sizeof(line) - 1, fp); // <svg width="495" height="560" version=... fclose(fp); char * p = strstr(line, " version="); if (p != 0) { *p = 0; fw.write(line+4); } } fw.write("/></p>\n"); } else { fw.write("<p align=\"center\"><img src=\""); fw.write(s); fw.write("\" alt=\"\" /></p>\n"); } fw.write(" <p align=\"center\"><b>"); writeq(name()); fw.write("</b></p><p><br /></p><p><br /></p>\n"); s = description(); if (!s.isEmpty()) { fw.write("<p>"); writeq(description()); fw.write("<br /></p>"); } write_properties(); unload(FALSE, FALSE); }
void UmlClass::gen_html(QCString pfix, unsigned int rank, unsigned int level) { UmlCom::message(name()); QCString s; s = description(); if (isActive()) fw.write("<p>Active class</p>\n"); if (!s.isEmpty()) { fw.write("<p>"); if (! javaDecl().isEmpty()) gen_java_decl(s, TRUE); else if (! phpDecl().isEmpty()) gen_php_decl(s, TRUE); else if (! pythonDecl().isEmpty()) gen_python_decl(s, TRUE); else gen_cpp_decl(s, TRUE); fw.write("<br /></p>\n"); } if (!cppDecl().isEmpty() || !javaDecl().isEmpty() || !phpDecl().isEmpty() || !pythonDecl().isEmpty()) { fw.write("<p>Declaration :</p><ul>\n"); s = cppDecl(); if (!s.isEmpty()) { fw.write("<li>C++ : "); gen_cpp_decl(s, FALSE); fw.write("</li>"); } s = javaDecl(); if (!s.isEmpty()) { fw.write("<li>Java : "); gen_java_decl(s, FALSE); fw.write("</li>"); } s = phpDecl(); if (!s.isEmpty()) { fw.write("<li>Php : "); gen_php_decl(s, FALSE); fw.write("</li>"); } s = pythonDecl(); if (!s.isEmpty()) { fw.write("<li>Python : "); gen_python_decl(s, FALSE); fw.write("</li>"); } fw.write("</ul>"); } if (subClasses.size() != 0) { sort(subClasses); fw.write("<p>Directly inherited by : "); for (unsigned i = 0; i != subClasses.size(); i += 1) { subClasses.elementAt(i)->write(); fw.write(' '); } fw.write("</p>\n"); } write_dependencies(); annotation_constraint(); bool p = FALSE; UmlItem * x; if ((x = associatedArtifact()) != 0) { p = TRUE; fw.write("<p>Artifact : "); x->write(); } const QVector<UmlComponent> comps = associatedComponents(); if (comps.size() != 0) { if (p) fw.write(", Component(s) :"); else { p = TRUE; fw.write("<p>Component(s) :"); } for (unsigned i = 0; i != comps.size(); i += 1) { fw.write(' '); comps[i]->write(); } } if ((x = associatedDiagram()) != 0) { if (p) fw.write(", Diagram : "); else { p = TRUE; fw.write("<p>Diagram : "); } x->write(); } if (p) fw.write("</p>\n"); if (parent()->kind() == aClass) { fw.write("<p>nested in "); parent()->write(); fw.write("</p>\n"); } write_properties(); // const QVector<UmlItem> ch = children(); if (ch.size() != 0) { if (stereotype() == "enum_pattern") { p = FALSE; for (unsigned i = 0; i != ch.size(); i += 1) { if (ch[i]->kind() == anAttribute) { if (!p) { p = TRUE; fw.write("<div class=\"sub\">\n<p>Items :</p><ul>\n"); } fw.write("<li>"); writeq(ch[i]->name()); fw.write("</li>\n"); } } if (p) fw.write("</ul>\n</div>\n"); } else { fw.write("<div class=\"sub\">\n"); if (stereotype() == "enum") { unsigned i; p = FALSE; for (i = 0; i != ch.size(); i += 1) { if ((ch[i]->kind() == anAttribute) && (ch[i]->stereotype() != "attribute")) { if (!p) { p = TRUE; fw.write("<p>Items :</p><ul>\n"); } fw.write("<li>"); writeq(ch[i]->name()); fw.write("</li>\n"); } } if (p) fw.write("</ul>\n"); s = ""; for (i = 0; i != ch.size(); i += 1) if ((ch[i]->kind() != anAttribute) || (ch[i]->stereotype() == "attribute")) ch[i]->html(s, 0, 0); } else if (flat) write_children(pfix, rank, level); else { // non flat s = ""; for (unsigned i = 0; i != ch.size(); i += 1) ch[i]->html(s, 0, 0); } fw.write("</div>\n"); } } sort(*inherited_opers); bool already = FALSE; for (unsigned i = 0; i != inherited_opers->size(); i += 1) { if (already) fw.write(", "); else { already = TRUE; fw.write("<p>All public operations : "); } inherited_opers->elementAt(i)->write(); fw.write(' '); } if (already) fw.write("</p>\n"); }
void UmlRelation::html(QByteArray, unsigned int, unsigned int) { bool extension; switch (relationKind()) { case aGeneralisation: case aRealization: case aDependency: return; case aDirectionalAssociation: extension = (parent()->stereotype() == "stereotype") && (roleType()->stereotype() == "metaclass"); break; default: extension = FALSE; } define(); if (extension) fw.write("<table><tr><td><div class=\"element\">Extension</div></td></tr></table>"); else { fw.write("<table><tr><td><div class=\"element\">Relation <b>"); writeq(name()); fw.write("</b></div></td></tr></table>"); } QByteArray s = description(); if (!s.isEmpty()) { fw.write("<p>"); if (! javaDecl().isEmpty()) gen_java_decl(s, TRUE); else if (! phpDecl().isEmpty()) gen_php_decl(s, TRUE); else if (! pythonDecl().isEmpty()) gen_python_decl(s); else gen_cpp_decl(s, TRUE); fw.write("<br /></p>"); } if (extension) { fw.write("<p>Extend "); roleType()->write(); fw.write("</p>"); } else { fw.write("<p>Declaration :</p><ul>"); fw.write("<li>Uml : "); gen_uml_decl(); fw.write("</li>"); s = cppDecl(); if (!s.isEmpty()) { fw.write("<li>C++ : "); gen_cpp_decl(s, FALSE); fw.write("</li>"); } s = javaDecl(); if (!s.isEmpty()) { fw.write("<li>Java : "); gen_java_decl(s, FALSE); fw.write("</li>"); } s = phpDecl(); if (!s.isEmpty()) { fw.write("<li>Php : "); gen_php_decl(s, FALSE); fw.write("</li>"); } s = pythonDecl(); if (!s.isEmpty()) { fw.write("<li>Python : "); gen_python_decl(s); fw.write("</li>"); } fw.write("</ul>"); } annotation_constraint(); write_properties(); unload(FALSE, FALSE); }