X-Git-Url: https://git.ucc.asn.au/?p=ipdf%2Fcode.git;a=blobdiff_plain;f=src%2Fview.cpp;h=d8a875bdc2ec680639641353fc06d628c1415810;hp=cd4cc35e9c286de55d5198198f79622b4455ccee;hb=e164c93218ed4599614f4f6e5e815429a3fedbf7;hpb=07db15ca49833542130f7c29c6a6dc7560fab59d diff --git a/src/view.cpp b/src/view.cpp index cd4cc35..d8a875b 100644 --- a/src/view.cpp +++ b/src/view.cpp @@ -11,17 +11,19 @@ void View::Translate(Real x, Real y) y *= m_bounds.h; m_bounds.x += x; m_bounds.y += y; + Debug("View Bounds => %s", m_bounds.Str().c_str()); } void View::ScaleAroundPoint(Real x, Real y, Real scaleAmt) { + // x and y are coordinates in the window // Convert to local coords. x *= m_bounds.w; y *= m_bounds.h; x += m_bounds.x; y += m_bounds.y; - Debug("Mouse wheel event %f %f %f\n", Float(x), Float(y), Float(scaleAmt)); + //Debug("Mouse wheel event %f %f %f\n", Float(x), Float(y), Float(scaleAmt)); Real top = y - m_bounds.y; Real left = x - m_bounds.x; @@ -33,6 +35,7 @@ void View::ScaleAroundPoint(Real x, Real y, Real scaleAmt) m_bounds.y = y - top; m_bounds.w *= scaleAmt; m_bounds.h *= scaleAmt; + Debug("View Bounds => %s", m_bounds.Str().c_str()); } void View::DrawGrid() @@ -69,10 +72,8 @@ void View::Render() debug_output_done = true; } - glClearColor(1.f,1.f,1.f,1.f); - glClear(GL_COLOR_BUFFER_BIT); - DrawGrid(); // Draw the gridlines + //DrawGrid(); // Draw the gridlines glMatrixMode(GL_PROJECTION); glLoadIdentity(); @@ -80,11 +81,16 @@ void View::Render() glMatrixMode(GL_MODELVIEW); glLoadIdentity(); + if (m_colour.a < 1.0f) + { + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + } glColor4f(m_colour.r, m_colour.g, m_colour.b, m_colour.a); glBegin(GL_QUADS); for (unsigned id = 0; id < m_document.ObjectCount(); ++id) { - if (m_document.m_objects.types[id] == RECT_FILLED) + if (m_document.m_objects.types[id] != RECT_FILLED) continue; Rect obj_bounds = m_document.m_objects.bounds[id]; glVertex2f(Float(obj_bounds.x), Float(obj_bounds.y)); @@ -97,7 +103,7 @@ void View::Render() for (unsigned id = 0; id < m_document.ObjectCount(); ++id) { - if (m_document.m_objects.types[id] == RECT_OUTLINE) + if (m_document.m_objects.types[id] != RECT_OUTLINE) continue; Rect obj_bounds = m_document.m_objects.bounds[id]; glBegin(GL_LINE_LOOP); @@ -108,4 +114,9 @@ void View::Render() glEnd(); } + if (m_colour.a < 1.0f) + { + glDisable(GL_BLEND); + } + }