--- /dev/null
+package com.example.furt.myapplication;
+
+import android.graphics.Paint;
+import android.graphics.Rect;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class GenericFormula implements Formula
+{
+ Paint p=new Paint();
+ int priority;
+ public String Draw(int p)
+ {
+ return "?";
+ } //la GenericFormula non può essere rappresentata
+ public String toString(){return Draw(0);}
+ public float size(){
+ p.setTextSize(DrawActivity.textSize);
+ return p.measureText(toString())+(float)(p.measureText(toString())*0.20);//ritorna la misura effettuata dalla classe Paint con un padding del 20% per migliorare la stima
+ }
+ public float sizeDeleted()
+ {
+ p.setTextSize(DrawActivity.textSize);
+ return p.measureText(toStringDeleted())+(float)(p.measureText(toStringDeleted())*0.20); //ritorna la misura effettuata dalla classe Paint con un padding del 20% per migliorare la stima
+ }
+ public String toStringDeleted()
+ {
+ return "["+toString()+"]";
+ }
+ public float height()
+ {
+ p.setTextSize(DrawActivity.textSize);
+ Rect bounds=new Rect();
+ p.getTextBounds(toString(),0,toString().length(),bounds);
+ return (float)((bounds.height()+((float)0.20*bounds.height()))*1.5); //l'altezza della formula va moltiplicata per l'inverso della densità dello schermo (circa 1.5)
+ }
+ public List<IntroductionRule> introductionRules(){
+ List<IntroductionRule> rules=new ArrayList<IntroductionRule>();
+ Node thisNode=new Node(this);
+ RuleIntroduction RAA=new RuleIntroduction("RAA",0); //R.A.A.
+ Node RAAnode=new Node(new FormulaBOT()); //Formula=Bottom
+ List<Formula> RAAhp=new ArrayList<Formula>(); //Tutte le ipotesi del nodo precedente
+ RAAhp.add(new FormulaNot(this)); //Più la negazione del nodo attuale
+ RAAnode.addHPFormula(RAAhp,true);
+ thisNode.addChild(RAAnode);
+ RAA.tempRule=thisNode;
+ rules.add(RAA);
+ /*
+ Node thisFakeNode=new Node(this);
+ RuleIntroduction fakeRAA=new RuleIntroduction("RAA",0,true); //fake R.A.A.
+ Node fakeRAAnode=new Node(new FormulaNot(this)); //Formula=!F
+ thisFakeNode.addChild(fakeRAAnode);
+ fakeRAA.tempRule=thisFakeNode;
+ rules.add(fakeRAA);
+ */
+ return rules;
+ }
+ public List<EliminationRule> EliminationRules(){
+ List<EliminationRule> nodes=new ArrayList<EliminationRule>();
+ return nodes;
+ }
+
+ @Override
+ public boolean Fill(Formula F) {
+ return false;
+ }
+
+ @Override
+ public boolean setCursor() {
+ return false;
+ }
+
+ @Override
+ public Formula duplicate() {
+ return null;
+ }
+
+ @Override
+ public Object clone() throws CloneNotSupportedException {
+ return super.clone();
+ }
+}