protected void calcWidth(ParserNode p) {
		FontMetrics fm = g.getFontMetrics();
		
		if (p.isVar()) {
//			Ako je cvor varijabla, na sirinu slike se dodaje sirina varijable
//			i razmak do sljedeceg znaka.
			picWidth += fm.getStringBounds(p.getName(), g).getWidth()
					+ symbolSize / 5;

		}
		if (p.isOp()) {
			if (p instanceof NotNode) {
//				Čvor Not nema svoju širinu niti zagrada pa se samo
//				rekurzivno nastavlja traženje širine za potomka
				calcWidth(p.getChildren().get(0));
			} else {
//				Ako je cvor operator (i nije Not), na sirinu se dodaje sirina simbola i razmak do
//				sljedeceg znaka
				picWidth += symbolSize + symbolSize / 5;
				
//				na širinu se još dodaje širina zarada i razmak
				picWidth += 2 * fm.stringWidth("(") + 2 * symbolSize / 5;
				
//				Čim u stablu postoji operator koji nije Not, to znači
//				da postoje zagrade na početku i na kraju koje treba maknuti
				removePars = true;
				
				for (int i = 0; i < p.getChildren().size(); i++) {
//					rekurzivno se nastavlja izračun
					calcWidth(p.getChildren().get(i));
//					Između svaka dva djeteta treba staviti operator i razmak
					if ((i != p.getChildren().size() - 1) && (i != 0)) {
						picWidth += symbolSize + symbolSize / 5;
					}
				}
			}
		}
		if (p == tree && removePars) {
//			Treba maknuti prvu i zadnju zagradu iz izraza
			picWidth -= 2 * fm.stringWidth("(") + 2 * symbolSize / 5;
		}
	}