]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/gTopLevel/termViewer.ml
Several changes (the beginning of a new era???)
[helm.git] / helm / gTopLevel / termViewer.ml
index 9a9c9c9b884ae941d0d976dcf20cb49735b39f1f..192bbb413b6d203eddfc48c1faa06d3c22670af8 100644 (file)
@@ -33,6 +33,8 @@
 (*                                                                            *)
 (******************************************************************************)
 
+let use_stylesheets = ref true;;(* false performs the transformations in OCaml*)
+
 (* List utility functions *)
 exception Skip;;
 
@@ -194,15 +196,62 @@ class proof_viewer obj =
    =
     Cic2acic.acic_object_of_cic_object currentproof
    in
-    let mml =
-     ApplyStylesheets.mml_of_cic_object
-      ~explode_all:true uri acic ids_to_inner_sorts ids_to_inner_types
-    in
-     self#load_doc ~dom:mml ;
-     current_infos <-
-      Some
-       (ids_to_terms,ids_to_father_ids,ids_to_conjectures,ids_to_hypotheses) ;
-     (acic, ids_to_inner_types, ids_to_inner_sorts)
+    if !use_stylesheets then
+     let mml =
+      ApplyStylesheets.mml_of_cic_object
+       ~explode_all:true uri acic ids_to_inner_sorts ids_to_inner_types
+     in
+      self#load_doc ~dom:mml ;
+      current_infos <-
+       Some
+        (ids_to_terms,ids_to_father_ids,ids_to_conjectures,ids_to_hypotheses) ;
+    else
+     (match acic with
+         Cic.ACurrentProof (id,idbody,n,conjectures,bo,ty,params) ->
+           let time1 = Sys.time () in
+           let content = 
+            Cic2content.acic2content 
+             (ref 0) ~name:(Some "prova") ~ids_to_inner_sorts
+             ~ids_to_inner_types bo in
+           let content2pres =
+             (Content2pres.proof2pres 
+               (function p -> 
+                 (Cexpr2pres.cexpr2pres_charcount 
+                    (Content_expressions.acic2cexpr ids_to_inner_sorts p)))) in
+           let pres = content2pres content in
+           let time2 = Sys.time () in
+           (* prerr_endline ("Fine trasformazione:" ^ (string_of_float (time2 -. time1))); *)
+           let xmlpres =
+            Xml.xml_nempty "math"
+             ["xmlns","http://www.w3.org/1998/Math/MathML" ;
+              "xmlns:helm","http://www.cs.unibo.it/helm" ;
+              "xmlns:xlink","http://www.w3.org/1999/xlink"
+             ] (Mpresentation.print_mpres pres) in
+           let time25 = Sys.time () in
+            (*
+            prerr_endline ("FINE printing to stream:" ^ (string_of_float (time25 -. time2)));
+            Xml.pp xmlpres (Some "tmp");
+            let time3 = Sys.time () in
+             prerr_endline ("FINE valutazione e printing dello stream:" ^ (string_of_float (time3 -. time25)));
+            *)
+           (try 
+             (* prerr_endline "(******** INIZIO DOM **********)"; *)
+             let mml = Xml2Gdomexmath.document_of_xml Misc.domImpl xmlpres in
+             let time3 = Sys.time () in
+             (* ignore (Misc.domImpl#saveDocumentToFile mml "tmp1" ()); *)
+             (* prerr_endline "(******** FINE DOM **********)"; *)
+             self#load_doc ~dom:mml;
+             prerr_endline ("Fine loading:" ^ (string_of_float (time3 -. time2)))
+            (*
+             self#load_uri "tmp";
+             let time4 = Sys.time () in
+             prerr_endline
+              ("Fine loading:" ^ (string_of_float (time4 -. time3)))
+            *)
+           with (GdomeInit.DOMException (_,s)) as e ->
+              prerr_endline s; raise e)
+       | _ -> assert false);
+    (acic, ids_to_inner_types, ids_to_inner_sorts)
  end
 ;;
 
@@ -228,3 +277,7 @@ let proof_viewer ?adjustmenth ?adjustmentv ?font_size ?font_manager
   end;
   mathview
 ;;
+
+let _ =
+ Cexpr2pres_hashtbl.init Cexpr2pres.cexpr2pres Cexpr2pres.cexpr2pres_charcount
+;;