#############################################################################
# Makefile for building: ttedit
-# Generated by qmake (2.01a) (Qt 4.8.0) on: Mon Feb 6 15:32:02 2012
+# Generated by qmake (2.01a) (Qt 4.8.2) on: Fri Sep 14 09:37:18 2012
# Project: ttedit.pro
# Template: app
-# Command: /usr/bin/qmake -unix -o Makefile ttedit.pro
+# Command: /usr/bin/qmake -o Makefile ttedit.pro
#############################################################################
####### Compiler, tools and options
INCPATH = -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -Iobj
LINK = g++
LFLAGS = -Wl,-O1
-LIBS = $(SUBLIBS) -L/usr/lib64/qt4 -lQtGui -L/usr/lib64 -L/usr/lib64/qt4 -L/usr/X11R6/lib -lQtCore -lgthread-2.0 -lrt -lglib-2.0 -lpthread
+LIBS = $(SUBLIBS) -L/usr/lib64/qt4 -lQtGui -L/usr/lib64 -L/usr/lib64/qt4 -L/usr/X11R6/lib -lQtCore -lglib-2.0 -lgthread-2.0 -lrt -lpthread
AR = ar cqs
RANLIB =
QMAKE = /usr/bin/qmake
/usr/share/qt4/mkspecs/features/lex.prf \
/usr/lib64/qt4/libQtGui.prl \
/usr/lib64/qt4/libQtCore.prl
- $(QMAKE) -unix -o Makefile ttedit.pro
+ $(QMAKE) -o Makefile ttedit.pro
/usr/share/qt4/mkspecs/common/unix.conf:
/usr/share/qt4/mkspecs/common/linux.conf:
/usr/share/qt4/mkspecs/common/gcc-base.conf:
/usr/lib64/qt4/libQtGui.prl:
/usr/lib64/qt4/libQtCore.prl:
qmake: FORCE
- @$(QMAKE) -unix -o Makefile ttedit.pro
+ @$(QMAKE) -o Makefile ttedit.pro
dist:
@$(CHK_DIR_EXISTS) obj/ttedit1.0.0 || $(MKDIR) obj/ttedit1.0.0
for(int poly=0; poly<gp->GetNumPolys(); poly++)
{
- if (gp->GetNumPoints(poly) > 2)
+ if (gp->GetNumPoints(poly) < 3)
+ continue;
+
+ // Initial move: If our start point is on curve, then go to it. Otherwise,
+ // check previous point. If it's on curve, go to it otherwise go the
+ // midpoint between start point and previous (since it's between two curve
+ // control points).
+ IPoint pt = (gp->GetOnCurve(poly, 0)
+ ? gp->GetPoint(poly, 0) : (gp->GetPrevOnCurve(poly, 0)
+ ? gp->GetPrevPoint(poly, 0) : gp->GetMidpointToPrev(poly, 0)));
+ path->moveTo(pt.x, pt.y);
+
+ for(int i=0; i<gp->GetNumPoints(poly); i++)
{
- // Initial move...
- // If last point is on curve then move to it, otherwise move to first point...
-
-//NOTE: This is basically doing the below for i=-1.
-// Find some way to integrate this crap.
-/*
-Could do in pairs: get i and i+1, connect them depending on whether the pair
-is a line or a curve.
-4 cases: on to on (line),
- on to off (begin curve),
- off to on (end curve),
- off to off (begin curve)
-*/
-#if 1
- for(int i=0; i<gp->GetNumPoints(poly); i++)
- {
- if (i == 0)
- {
- IPoint pt = (gp->GetOnCurve(poly, 0)
- ? gp->GetPoint(poly, 0) : (gp->GetPrevOnCurve(poly, 0)
- ? gp->GetPrevPoint(poly, 0) : gp->GetMidpointToPrev(poly, 0)));
- path->moveTo(pt.x, pt.y);
- }
-
- if (gp->GetOnCurve(poly, i) && gp->GetNextOnCurve(poly, i))
- {
- // Handle lines...
- path->lineTo(gp->GetNextX(poly, i), gp->GetNextY(poly, i));
- }
- else
- {
- // Skip point if it's on curve (start of curve--it's already
- // been plotted so we don't care about it...
- if (gp->GetOnCurve(poly, i))
- i++;
-
- // We may have moved past the end; if not, handle curve
- if (i < gp->GetNumPoints(poly))
- {
- // Handle curves...
- IPoint pt = (gp->GetNextOnCurve(poly, i)
- ? gp->GetNextPoint(poly, i) : gp->GetMidpointToNext(poly, i));
-
- path->quadTo(gp->GetX(poly, i), gp->GetY(poly, i), pt.x, pt.y);
- }
- }
- }
-#else
- IPoint pt;
-
- if (gp->GetPrevOnCurve(poly, 0))
- pt = gp->GetPrevPoint(poly, 0);
+ // If this point and then next are both on curve, we have a line...
+ if (gp->GetOnCurve(poly, i) && gp->GetNextOnCurve(poly, i))
+ path->lineTo(gp->GetNextX(poly, i), gp->GetNextY(poly, i));
else
- pt = (gp->GetOnCurve(poly, 0)
- ? gp->GetPoint(poly, 0) : gp->GetMidpointToPrev(poly, 0));
-
- path->moveTo(pt.x, pt.y);
-
- for(int i=0; i<gp->GetNumPoints(poly); i++)
{
+ // Skip point if it's on curve (start of curve--it's already
+ // been plotted so we don't need to handle it...)
if (gp->GetOnCurve(poly, i))
- path->lineTo(gp->GetX(poly, i), gp->GetY(poly, i));
- else
- {
- pt = (gp->GetNextOnCurve(poly, i)
- ? gp->GetNextPoint(poly, i) : gp->GetMidpointToNext(poly, i));
-
- path->quadTo(gp->GetX(poly, i), gp->GetY(poly, i), pt.x, pt.y);
-
- // If following point is on curve, move past it
- if (gp->GetNextOnCurve(poly, i))
- i++;
- }
- }
-#endif
+ continue;
+
+ // We are now guaranteed that we are sitting on a curve control point
+ // (off curve). Figure the extent of the curve: If the following is a
+ // curve control point, then use the midpoint to it otherwise go to
+ // the next point since it's on curve.
+ IPoint pt = (gp->GetNextOnCurve(poly, i)
+ ? gp->GetNextPoint(poly, i) : gp->GetMidpointToNext(poly, i));
- path->closeSubpath();
+ path->quadTo(gp->GetX(poly, i), gp->GetY(poly, i), pt.x, pt.y);
+ }
}
+
+ path->closeSubpath();
}
}
QPainter p(this);
+// p.setBrush(QColor(0, 163, 200)); // Nice, aqua color...
p.setPen(QPen(Qt::black, 1.0, Qt::SolidLine));
-// p.setBrush(QColor(122, 163, 39));
p.setBrush(Qt::black);
-/*
-1.0 -> 3.0, height = 400
-r.h / ps.h = 2/400 <-- do it the other way!
-
-height works, width does not
-
-2-step process:
-compare aspect ratios
-
-ps.w - ((r.h / ps.h) * ps.w)
-
-0.5 -> where in the 400? -> 100
-0.5/r.h(2.0) = 0.25 * ps.h(400) = 100
-conv.fac. -> (ps.h / r.h)
-*/
QRectF rect = path->boundingRect();
QSize paintSize = size();
+ // For some reason, this code cuts off two pixels when rendering the path.
+ // Not sure why, but we compensate for that here.
+ paintSize.rwidth() -= 2;
+ paintSize.rheight() -= 2;
+
p.translate(0, paintSize.height());
float extraX = 0.0f, extraY = 0.0f;
float xConvFac = (float)paintSize.width() / rect.width();
if (xConvFac > yConvFac)
{
- // height is limiting factor
+ // height is limiting factor (smaller than width)
p.scale(yConvFac, -yConvFac);
extraX = (((float)paintSize.width() / yConvFac) - rect.width()) / 2.0f;
}
else
{
- // width is limiting factor
+ // width is limiting factor (smaller than height)
p.scale(xConvFac, -xConvFac);
//extraY = (rect.width() / (float)paintSize.width()) * (float)paintSize.height();
//extraY = (extraY - rect.height()) / 2.0f;
// JLH 03/05/2009 Initial conversion from wxWidgets to Qt
//
-// FIXED:
-//
-// - Fix problem with tool palette not getting focus 1st time it's called up [DONE]
-// - Split out windows/classes defined here into their own files [DONE]
-//
-// STILL TO BE DONE:
-//
-// - Fix bug in Glyphpoints when dragging on an empty canvas or loading a font
-// - Fix scrolling, zooming, settings (ini)
-// - Finish conversion to wxWidgets for cross-platform portability
-// - Fix problem with owned window causing main window refresh problems
-// (ironically enough, it doesn't seem to be a problem anymore...)
-//
-
-// Uncomment this for debugging...
-//#define DEBUG
-//#define DEBUGFOO // Various tool debugging...
-//#define DEBUGTP // Toolpalette debugging...
-
#include "ttedit.h"
#include <QApplication>
#include "ttemainwindow.h"
-//#include "charwindow.h"
// Main app constructor--we stick globally accessible stuff here...
-TTEdit::TTEdit(int argc, char * argv[]): QApplication(argc, argv), charWnd(NULL)
+TTEdit::TTEdit(int & argc, char * argv[]): QApplication(argc, argv), charWnd(NULL)
{
mainWindow = new TTEMainWindow;
//printf("mainWindow.show();\n");
//printf("return app.exec();\n");
return app.exec();
}
-