Subversion Repositories DIN Is Noise

Rev

Rev 2168 | Blame | Compare with Previous | Last modification | View Log | RSS feed

/*
* phrasor.cc
* DIN Is Noise is copyright (c) 2006-2025 Jagannathan Sampath
* DIN Is Noise is released under GNU Public License 2.0
* For more information, please visit https://dinisnoise.org/
*/



#include "phrasor.h"
#include "dingl.h"

void phrasor::draw (box<int>& win) {
  int i;
  //float r, g, b;
  if (size) {
    if (state == phrasor::recording) {
      i = 0;
      //r = 1; g = b = 0;
    } else {
      i = cur;
      //r = b = 0;
      //g = 1;
    }
    //glColor3f (r, g, b);
    draw_marker (data[i].x, data[i].y, win);
  }
}

void phrasor::draw_marker (int x, int y, box<int>& win) {
  int mk [8];
  mk[0]=win.left;
  mk[1]=y;
  mk[2]=win.right;
  mk[3]=y;
  mk[4]=x;
  mk[5]=win.top;
  mk[6]=x;
  mk[7]=win.bottom;
  glColor3f (0.7f, 0.7f, 0.2f);
  glVertexPointer (2, GL_INT, 0, mk);
  /*glEnable (GL_LINE_STIPPLE);
  glLineStipple (1, 0x0ff0);*/

  glDrawArrays (GL_LINES, 0, 4);
  //glDisable (GL_LINE_STIPPLE);
}

int phrasor::next () {
  int c = cur + 1;
  if (c >= size) {
    cur = 0;
  } else cur = c;
  amount = cur * last_1;
  return 1;
}

int phrasor::validate () {
  size = data.size ();
  if (size == 0) return 0;
  last = size - 1;
  last_1 = 1.0f / last;
  return 1;
}


void phrasor::set_cur (float amt) {
  if (size) {
    amount = amt;
    cur = amount * last;
  }
}