~ubuntu-branches/ubuntu/precise/csound/precise

« back to all changes in this revision

Viewing changes to InOut/widgets.cpp

  • Committer: Package Import Robot
  • Author(s): Felipe Sateler
  • Date: 2012-04-19 09:26:46 UTC
  • mfrom: (3.2.19 sid)
  • Revision ID: package-import@ubuntu.com-20120419092646-96xbj1n6atuqosk2
Tags: 1:5.17.6~dfsg-1
* New upstream release
 - Do not build the wiimote opcodes (we need wiiuse).
* Add new API function to symbols file
* Disable lua opcodes, they were broken. Requires OpenMP to be enabled.
* Backport fixes from upstream:
  - Link dssi4cs with dl. Backport
  - Fix building of CsoundAC

Show diffs side-by-side

added added

removed removed

Lines of Context:
884
884
void Fl_Value_Slider_Input::draw(void)
885
885
{
886
886
    int sxx = x(), syy = y(), sww = w(), shh = h();
887
 
    int bww = w();
 
887
    //int bww = w();
888
888
    int X = x(), Y = y(), W = w(), H = h();
889
889
 
890
890
    int border_size=Fl::box_dx(box());
891
891
 
892
892
    if (horizontal()) {
893
 
      bww = textboxsize();  sxx += textboxsize(); sww -= textboxsize();
 
893
      //bww = textboxsize();  
 
894
      sxx += textboxsize(); sww -= textboxsize();
894
895
      input.resize(X,Y,W-sww,shh);
895
896
    }
896
897
    else {
1093
1094
        case LIN_:
1094
1095
        case EXP_:
1095
1096
          val = *p->kout;
1096
 
          if (val < min) val=min;
1097
 
          else if(val>max) val=max;
 
1097
          if (min < max) {
 
1098
            if (val < min) val=min;
 
1099
            else if(val>max) val=max;
 
1100
          }
 
1101
          else {
 
1102
            if (val < max) val=max;
 
1103
            else if(val>min) val=min;
 
1104
          }
1098
1105
          break;
1099
1106
        default: val = ((Fl_Valuator *)v.WidgAddress)->value();
1100
1107
        }
1114
1121
          case LIN_: case EXP_:
1115
1122
            val = *fld->sldbnk[j].out;
1116
1123
            min = fld->sldbnk[j].min; max = fld->sldbnk[j].max;
1117
 
            if (val < min) val = min;
1118
 
            if (val > max) val = max;
 
1124
            if (min < max) {
 
1125
              if (val < min) val=min;
 
1126
              else if(val>max) val=max;
 
1127
            }
 
1128
            else {
 
1129
              if (val < max) val=max;
 
1130
              else if(val>min) val=min;
 
1131
            }
1119
1132
            break;
1120
1133
          default:
1121
1134
            val = ((Fl_Valuator *) ((Fl_Group*)v.WidgAddress)->
1137
1150
          case LIN_: case EXP_:
1138
1151
            val = *fld->sldbnk[j].out;
1139
1152
            min = fld->sldbnk[j].min; max = fld->sldbnk[j].max;
1140
 
            if (val < min) val = min;
1141
 
            if (val > max) val = max;
 
1153
            if (min < max) {
 
1154
              if (val < min) val=min;
 
1155
              else if(val>max) val=max;
 
1156
            }
 
1157
            else {
 
1158
              if (val < max) val=max;
 
1159
              else if(val>min) val=min;
 
1160
            }
1142
1161
            break;
1143
1162
          default:
1144
1163
            val = ((Fl_Valuator *) ((Fl_Group*) v.WidgAddress)->child(j))->value();
1155
1174
        case LIN_:
1156
1175
        case EXP_:
1157
1176
          val = *p->kout;
1158
 
          if (val < min) val=min;
1159
 
          else if(val>max) val=max;
 
1177
          if (min < max) {
 
1178
            if (val < min) val=min;
 
1179
            else if(val>max) val=max;
 
1180
          }
 
1181
          else {
 
1182
            if (val < max) val=max;
 
1183
            else if(val>min) val=min;
 
1184
          }
1160
1185
          break;
1161
1186
        default: val = ((Fl_Valuator *)v.WidgAddress)->value();
1162
1187
        }
1171
1196
        case LIN_:
1172
1197
        case EXP_:
1173
1198
          val = *p->kout;
1174
 
          if (val < min) val=min;
1175
 
          else if(val>max) val=max;
 
1199
          if (min < max) {
 
1200
            if (val < min) val=min;
 
1201
            else if(val>max) val=max;
 
1202
          }
 
1203
          else {
 
1204
            if (val < max) val=max;
 
1205
            else if(val>min) val=min;
 
1206
          }
1176
1207
          break;
1177
1208
        default: val = ((Fl_Valuator *)v.WidgAddress)->value();
1178
1209
        }
1182
1213
        FLTEXT *p = (FLTEXT *) (v.opcode);
1183
1214
        fld->widg_name = GetString(csound, p->name, p->XSTRCODE);
1184
1215
        val = *p->kout; min = fld->min = *p->imin; max = fld->max = *p->imax;
1185
 
        if (val < min) val=min;
1186
 
        else if (val>max) val=max;
 
1216
        if (min < max) {
 
1217
          if (val < min) val=min;
 
1218
          else if(val>max) val=max;
 
1219
        }
 
1220
        else {
 
1221
          if (val < max) val=max;
 
1222
          else if(val>min) val=min;
 
1223
        }
1187
1224
        fld->value = val;
1188
1225
        fld->exp = LIN_;
1189
1226
      }
1196
1233
        case LIN_:
1197
1234
        case EXP_:
1198
1235
          val = *p->koutx;
1199
 
          if (val < min) val=min;
1200
 
          else if(val>max) val=max;
 
1236
          if (min < max) {
 
1237
            if (val < min) val=min;
 
1238
            else if(val>max) val=max;
 
1239
          }
 
1240
          else {
 
1241
            if (val < max) val=max;
 
1242
            else if(val>min) val=min;
 
1243
          }
1201
1244
          break;
1202
1245
        default:
1203
1246
          val = ((Fl_Positioner *)v.WidgAddress)->xvalue();
1208
1251
        switch (fld->exp2) {
1209
1252
        case LIN_: case EXP_:
1210
1253
          val = *p->kouty;
1211
 
          if (val < min) val=min;
1212
 
          else if(val>max) val=max;
 
1254
          if (min < max) {
 
1255
            if (val < min) val=min;
 
1256
            else if(val>max) val=max;
 
1257
          }
 
1258
          else {
 
1259
            if (val < max) val=max;
 
1260
            else if(val>min) val=min;
 
1261
          }
1213
1262
          break;
1214
1263
        default:
1215
1264
          val = ((Fl_Positioner *)v.WidgAddress)->yvalue();
1271
1320
      }
1272
1321
      Fl_Widget* o = (Fl_Widget*) (valuators[k].WidgAddress);
1273
1322
      void *opcode = valuators[k].opcode;
1274
 
      //CSOUND *csound = (CSOUND*) (((OPDS*) opcode)->insdshead->csound); //Not used
 
1323
//CSOUND *csound = (CSOUND*) (((OPDS*) opcode)->insdshead->csound); //Not used
1275
1324
      VALUATOR_FIELD* fld = &fields[j];
1276
1325
      string opcode_name = fld->opcode_name;
1277
1326
 
1278
1327
      MYFLT val = fld->value, valtab = fld->value, min=fld->min,
1279
1328
        max=fld->max, range,base;
1280
 
      if (val < min) val = min;
1281
 
      else if (val >max) val = max;
 
1329
      if (min < max) {
 
1330
        if (val < min) val = min;
 
1331
        else if (val >max) val = max;
 
1332
      }
 
1333
      else {
 
1334
        if (val < max) val=max;
 
1335
        else if(val>min) val=min;
 
1336
      }
1282
1337
 
1283
1338
      if (opcode_name == "FLjoy") {
1284
1339
        switch(fld->exp) {
1327
1382
          if(fld->value >= *p->ioff - 0.0001 &&
1328
1383
             fld->value <= *p->ioff + 0.0001)  // to avoid eventual  math rounding
1329
1384
            ((Fl_Button*) o)->value(0);
1330
 
          else if (fld->value >= *p->ion - 0.0001 &&
1331
 
                   fld->value <= *p->ion + 0.0001) // to avoid eventual math rounding
1332
 
            ((Fl_Button*) o)->value(1);
1333
 
          else
1334
 
            ((Fl_Button*) o)->value((int)fld->value);
 
1385
          else 
 
1386
            if (fld->value >= *p->ion - 0.0001 &&
 
1387
                fld->value <= *p->ion + 0.0001) // to avoid eventual math rounding
 
1388
              ((Fl_Button*) o)->value(1);
 
1389
            else
 
1390
              ((Fl_Button*) o)->value((int)fld->value);
1335
1391
          o->do_callback(o, opcode);
1336
1392
        }
1337
1393
      }
1416
1472
        case LIN_:
1417
1473
          if (opcode_name == "FLbox" || opcode_name == "FLvalue" ) continue;
1418
1474
          else if (opcode_name == "FLtext" &&
1419
 
                   *((FLTEXT *)opcode)->itype == 1) continue;
 
1475
                   *((FLTEXT *)opcode)->itype == 1) {
 
1476
            ((Fl_Valuator*) o)->value(val);
 
1477
            continue;
 
1478
          }
1420
1479
          ((Fl_Valuator*) o)->value(val);
1421
1480
          break;
1422
1481
        case EXP_:
1517
1576
          Fl_lock(csound);
1518
1577
          n = fl_choice("%s", Str("Saving could overwrite the old file.\n"
1519
1578
                                  "Are you sure you want to save ?"),
1520
 
                        Str("No"), Str("Yes"), NULL);
 
1579
                        Str("No"), Str("Yes"), (const char*)""); // used to be NULL
1521
1580
          Fl_unlock(csound);
1522
1581
          if (!n)
1523
1582
            return OK;
2676
2735
 
2677
2736
  //-----------
2678
2737
 
2679
 
  static int StartPack(CSOUND *csound, FLSCROLL *p)
 
2738
  static int StartPack(CSOUND *csound, FLPACK *p)
2680
2739
  {
2681
2740
      Fl_Pack *o = new Fl_Pack ((int) *p->ix, (int) *p->iy,
2682
2741
                                (int) *p->iwidth, (int) *p->iheight);
2683
 
      //fl_window->resizable(o);
2684
 
      o->box(FL_ENGRAVED_FRAME);
2685
 
      o->spacing(15);
 
2742
      Fl_Boxtype borderType = FL_FLAT_BOX;
 
2743
      int iborder = (int)*p->iborder;
 
2744
      // fl_window->resizable(o);
 
2745
      if (!((iborder<0 || iborder>7)))
 
2746
          borderType = BOX_TABLE[iborder];
 
2747
      o->box(borderType);       // JPff added March 2012
 
2748
      o->type((int)*p->itype);
 
2749
      o->spacing((int)*p->ispace);
2686
2750
 
2687
2751
      ADDR_STACK adrstk(&p->h,o,ST(stack_count));
2688
2752
      ST(AddrStack).push_back(adrstk);
2865
2929
          break;
2866
2930
        case EXP_:        // exponential
2867
2931
          #if defined(sun)
2868
 
            log_base = (MYFLT) log(::pow(v.max / (double)v.min, 1.0 / (v.max - v.min)));
 
2932
            log_base = (MYFLT) log(::pow(v.max / (double)v.min,
 
2933
                                         1.0 / (v.max - v.min)));
2869
2934
          #else
2870
2935
            log_base = (MYFLT) log(::pow(v.max / v.min, 1.0 / (v.max - v.min)));
2871
2936
          #endif
2902
2967
          break;
2903
2968
        case EXP_:        // exponential
2904
2969
          #if defined(sun)
2905
 
            log_base = (MYFLT) log(::pow(v.max / (double)v.min, 1.0 / (v.max - v.min)));
 
2970
            log_base = (MYFLT) log(::pow(v.max / (double)v.min, 
 
2971
                                   1.0 / (v.max - v.min)));
2906
2972
          #else
2907
2973
            log_base = (MYFLT) log(::pow(v.max / v.min, 1.0 / (v.max - v.min)));
2908
2974
          #endif
3264
3330
      Fl_Slider *o;
3265
3331
      if (itype <= 10) o = new Fl_Slider(ix, iy, iwidth, iheight, controlName);
3266
3332
      else {
3267
 
        o = new Fl_Value_Slider_Input(csound, ix, iy, iwidth, iheight, controlName);
 
3333
        o = new Fl_Value_Slider_Input(csound, ix, iy, 
 
3334
                                      iwidth, iheight, controlName);
3268
3335
        itype -=10;
3269
3336
        //o->labelsize(20);
3270
3337
        ((Fl_Value_Slider_Input*) o)->textboxsize(50);
3350
3417
 
3351
3418
      if (*p->ioutable  < 1) {
3352
3419
        if (LIKELY(csound->zkstart != NULL &&
3353
 
                   csound->zklast > (long)(*p->inumsliders + *p->ioutablestart_ndx)))
 
3420
                   csound->zklast > (long)(*p->inumsliders+*p->ioutablestart_ndx)))
3354
3421
          outable = csound->zkstart + (long) *p->ioutablestart_ndx;
3355
3422
        else {
3356
3423
          return csound->InitError(csound, "%s",
3776
3843
        break;
3777
3844
      case 2:
3778
3845
        {
3779
 
          o = new Fl_Value_Input_Spin(csound, ix, iy, iwidth, iheight, controlName);
 
3846
          o = new Fl_Value_Input_Spin(csound, ix, iy,
 
3847
                                      iwidth, iheight, controlName);
3780
3848
          ((Fl_Value_Input *) o)->step(istep);
3781
3849
          ((Fl_Value_Input *) o)->range(*p->imin,*p->imax);
3782
3850
        }
4426
4494
 
4427
4495
      if (*p->ioutable  < 1) {
4428
4496
        if (LIKELY(csound->zkstart != NULL &&
4429
 
                   csound->zklast>(long)(*p->inumsliders + *p->ioutablestart_ndx)))
 
4497
                   csound->zklast>(long)(*p->inumsliders+*p->ioutablestart_ndx)))
4430
4498
          outable = csound->zkstart + (long) *p->ioutablestart_ndx;
4431
4499
        else {
4432
4500
          return csound->InitError(csound, "%s",
5244
5312
      if (p->numslid == 0) p->numslid = p->q->elements - p->startslid;
5245
5313
      if (UNLIKELY( p->q->elements < p->startslid + p->numslid)) {
5246
5314
        return csound->InitError(csound, "%s",
5247
 
                                 Str("FLslidBnkSetk: too many sliders to reset!"));
 
5315
                                 Str("FLslidBnkSetk:"
 
5316
                                     " too many sliders to reset!"));
5248
5317
      }
5249
5318
      return OK;
5250
5319
  }
5642
5711
    (SUBR) EndScroll,               (SUBR) NULL,              (SUBR) NULL },
5643
5712
  { (char*)"FLscroll_end",S(FLSCROLLEND),  1,  (char*)"",     (char*)"",
5644
5713
    (SUBR) EndScroll,               (SUBR) NULL,              (SUBR) NULL },
5645
 
  { (char*)"FLpack",      S(FLPACK),       1,  (char*)"",     (char*)"iiii",
 
5714
  { (char*)"FLpack",      S(FLPACK),       1,  (char*)"",     (char*)"iiiiooo",
5646
5715
    (SUBR) StartPack,               (SUBR) NULL,              (SUBR) NULL },
5647
5716
  { (char*)"FLpackEnd",   S(FLPACKEND),    1,  (char*)"",     (char*)"",
5648
5717
    (SUBR) EndPack,                 (SUBR) NULL,              (SUBR) NULL },