Declare loop variables inside for loop declaration where possible.
PiperOrigin-RevId: 518846098 Change-Id: Icdb2e5894bd80110552e29270472eeb242e6cf2c
This commit is contained in:
committed by
Copybara-Service
parent
ce6c9053e2
commit
145fe7f354
@@ -517,7 +517,7 @@ typedef struct _mjtPrism mjtPrism;
|
||||
|
||||
// ccd prism support function
|
||||
static void prism_support(const void *obj, const ccd_vec3_t *dir, ccd_vec3_t *vec) {
|
||||
int i, istart, ibest;
|
||||
int istart, ibest;
|
||||
mjtNum best, tmp;
|
||||
const mjtPrism* p = (const mjtPrism*)obj;
|
||||
|
||||
@@ -525,7 +525,7 @@ static void prism_support(const void *obj, const ccd_vec3_t *dir, ccd_vec3_t *ve
|
||||
istart = dir->v[2]<0 ? 0 : 3;
|
||||
ibest = istart;
|
||||
best = mju_dot3(p->v[istart], dir->v);
|
||||
for (i=istart+1; i<istart+3; i++) {
|
||||
for (int i=istart+1; i<istart+3; i++) {
|
||||
if ((tmp = mju_dot3(p->v[i], dir->v)) > best) {
|
||||
ibest = i;
|
||||
best = tmp;
|
||||
@@ -584,7 +584,7 @@ int mjc_ConvexHField(const mjModel* m, const mjData* d,
|
||||
int hid = m->geom_dataid[g1];
|
||||
int nrow = m->hfield_nrow[hid];
|
||||
int ncol = m->hfield_ncol[hid];
|
||||
int r, c, dr[2], cnt, rmin, rmax, cmin, cmax, nvert;
|
||||
int dr[2], cnt, rmin, rmax, cmin, cmax, nvert;
|
||||
const float* data = m->hfield_data + m->hfield_adr[hid];
|
||||
mjtPrism prism;
|
||||
|
||||
@@ -710,9 +710,9 @@ int mjc_ConvexHField(const mjModel* m, const mjData* d,
|
||||
|
||||
// process all prisms in sub-grid
|
||||
cnt = 0;
|
||||
for (r=rmin; r<rmax; r++) {
|
||||
for (int r=rmin; r<rmax; r++) {
|
||||
nvert = 0;
|
||||
for (c=cmin; c<=cmax; c++) {
|
||||
for (int c=cmin; c<=cmax; c++) {
|
||||
for (int i=0; i<2; i++) {
|
||||
// send vertex to prism constructor
|
||||
addVert(&nvert, &prism, dx*c-size1[0], dy*(r+dr[i])-size1[1],
|
||||
|
||||
@@ -664,7 +664,7 @@ int mj_broadphase(const mjModel* m, mjData* d, int* pair, int maxpair) {
|
||||
// find center of non-world geoms; return if none
|
||||
cnt = 0;
|
||||
mju_zero3(cen);
|
||||
for (i=0; i<ngeom; i++) {
|
||||
for (int i=0; i<ngeom; i++) {
|
||||
if (m->geom_bodyid[i]) {
|
||||
mju_addTo3(cen, d->geom_xpos+3*i);
|
||||
cnt++;
|
||||
@@ -673,14 +673,14 @@ int mj_broadphase(const mjModel* m, mjData* d, int* pair, int maxpair) {
|
||||
if (cnt==0) {
|
||||
return npair;
|
||||
} else {
|
||||
for (i=0; i<3; i++) {
|
||||
for (int i=0; i<3; i++) {
|
||||
cen[i] /= cnt;
|
||||
}
|
||||
}
|
||||
|
||||
// compute covariance
|
||||
mju_zero(cov, 9);
|
||||
for (i=0; i<ngeom; i++) {
|
||||
for (int i=0; i<ngeom; i++) {
|
||||
if (m->geom_bodyid[i]) {
|
||||
mju_sub3(dif, d->geom_xpos+3*i, cen);
|
||||
mjtNum D00 = dif[0]*dif[0];
|
||||
@@ -700,7 +700,7 @@ int mj_broadphase(const mjModel* m, mjData* d, int* pair, int maxpair) {
|
||||
cov[8] += D22;
|
||||
}
|
||||
}
|
||||
for (i=0; i<9; i++) {
|
||||
for (int i=0; i<9; i++) {
|
||||
cov[i] /= cnt;
|
||||
}
|
||||
|
||||
@@ -713,7 +713,7 @@ int mj_broadphase(const mjModel* m, mjData* d, int* pair, int maxpair) {
|
||||
|
||||
// construct body AABB for the aligned frame, count collidable
|
||||
int bufcnt = 0;
|
||||
for (i=1; i<nbody; i++) {
|
||||
for (int i=1; i<nbody; i++) {
|
||||
makeAABB(m, d, aabb+6*i, i, frame);
|
||||
|
||||
if (can_collide(m, i)) {
|
||||
@@ -734,7 +734,7 @@ int mj_broadphase(const mjModel* m, mjData* d, int* pair, int maxpair) {
|
||||
|
||||
// init sortbuf with axis0
|
||||
j = 0;
|
||||
for (i=1; i<nbody; i++) {
|
||||
for (int i=1; i<nbody; i++) {
|
||||
// cannot colide
|
||||
if (!can_collide(m, i)) {
|
||||
continue;
|
||||
@@ -758,10 +758,10 @@ int mj_broadphase(const mjModel* m, mjData* d, int* pair, int maxpair) {
|
||||
|
||||
// sweep and prune
|
||||
cnt = 0; // size of active list
|
||||
for (i=0; i<2*bufcnt; i++) {
|
||||
for (int i=0; i<2*bufcnt; i++) {
|
||||
// min value: collide with all in list, add
|
||||
if (!(sortbuf[i].body_ismax & 0x10000)) {
|
||||
for (j=0; j<cnt; j++) {
|
||||
for (int j=0; j<cnt; j++) {
|
||||
// get body ids: no need to mask ismax because activebuf entries never have the ismax bit,
|
||||
// and sortbuf[i].body_ismax is tested above
|
||||
b1 = activebuf[j].body_ismax;
|
||||
@@ -797,7 +797,7 @@ int mj_broadphase(const mjModel* m, mjData* d, int* pair, int maxpair) {
|
||||
// max value: remove corresponding min value from list
|
||||
else {
|
||||
toremove = sortbuf[i].body_ismax & 0xFFFF;
|
||||
for (j=0; j<cnt; j++) {
|
||||
for (int j=0; j<cnt; j++) {
|
||||
if (activebuf[j].body_ismax==toremove) {
|
||||
if (j<cnt-1) {
|
||||
memmove(activebuf+j, activebuf+j+1, sizeof(mjtBroadphase)*(cnt-1-j));
|
||||
@@ -921,14 +921,13 @@ void mj_collideGeoms(const mjModel* m, mjData* d, int g1, int g2, int flg_user,
|
||||
// remove repeated contacts in box-box
|
||||
if (type1==mjGEOM_BOX && type2==mjGEOM_BOX) {
|
||||
// use dim field to mark: -1: bad, 0: good
|
||||
for (i=0; i<num; i++) {
|
||||
for (int i=0; i<num; i++) {
|
||||
con[i].dim = 0;
|
||||
}
|
||||
|
||||
// find bad
|
||||
int j;
|
||||
for (i=0; i<num-1; i++) {
|
||||
for (j=i+1; j<num; j++) {
|
||||
for (int i=0; i<num-1; i++) {
|
||||
for (int j=i+1; j<num; j++) {
|
||||
if (con[i].pos[0]==con[j].pos[0] &&
|
||||
con[i].pos[1]==con[j].pos[1] &&
|
||||
con[i].pos[2]==con[j].pos[2]) {
|
||||
@@ -940,7 +939,7 @@ void mj_collideGeoms(const mjModel* m, mjData* d, int g1, int g2, int flg_user,
|
||||
|
||||
// consolidate good
|
||||
i = 0;
|
||||
for (j=0; j<num; j++) {
|
||||
for (int j=0; j<num; j++) {
|
||||
if (con[j].dim==0) {
|
||||
// different: copy
|
||||
if (i<j) {
|
||||
@@ -963,7 +962,7 @@ void mj_collideGeoms(const mjModel* m, mjData* d, int g1, int g2, int flg_user,
|
||||
int gp = (m->geom_priority[g1]>m->geom_priority[g2] ? g1 : g2);
|
||||
|
||||
// friction
|
||||
for (i=0; i<3; i++) {
|
||||
for (int i=0; i<3; i++) {
|
||||
friction[2*i] = m->geom_friction[3*gp+i];
|
||||
}
|
||||
|
||||
@@ -977,7 +976,7 @@ void mj_collideGeoms(const mjModel* m, mjData* d, int g1, int g2, int flg_user,
|
||||
// same priority
|
||||
else {
|
||||
// friction: max
|
||||
for (i=0; i<3; i++) {
|
||||
for (int i=0; i<3; i++) {
|
||||
friction[2*i] = mju_max(m->geom_friction[3*g1+i], m->geom_friction[3*g2+i]);
|
||||
}
|
||||
|
||||
@@ -994,14 +993,14 @@ void mj_collideGeoms(const mjModel* m, mjData* d, int g1, int g2, int flg_user,
|
||||
|
||||
// reference standard: mix
|
||||
if (m->geom_solref[mjNREF*g1]>0 && m->geom_solref[mjNREF*g2]>0) {
|
||||
for (i=0; i<mjNREF; i++) {
|
||||
for (int i=0; i<mjNREF; i++) {
|
||||
solref[i] = mix*m->geom_solref[mjNREF*g1+i] + (1-mix)*m->geom_solref[mjNREF*g2+i];
|
||||
}
|
||||
}
|
||||
|
||||
// reference direct: min
|
||||
else {
|
||||
for (i=0; i<mjNREF; i++) {
|
||||
for (int i=0; i<mjNREF; i++) {
|
||||
solref[i] = mju_min(m->geom_solref[mjNREF*g1+i], m->geom_solref[mjNREF*g2+i]);
|
||||
}
|
||||
}
|
||||
@@ -1019,7 +1018,7 @@ void mj_collideGeoms(const mjModel* m, mjData* d, int g1, int g2, int flg_user,
|
||||
// set friction, solref, solimp: pair
|
||||
else {
|
||||
// friction
|
||||
for (i=0; i<5; i++) {
|
||||
for (int i=0; i<5; i++) {
|
||||
friction[i] = m->pair_friction[5*ipair+i];
|
||||
}
|
||||
|
||||
@@ -1031,12 +1030,12 @@ void mj_collideGeoms(const mjModel* m, mjData* d, int g1, int g2, int flg_user,
|
||||
}
|
||||
|
||||
// clamp friction to mjMINMU
|
||||
for (i=0; i<5; i++) {
|
||||
for (int i=0; i<5; i++) {
|
||||
friction[i] = mju_max(mjMINMU, friction[i]);
|
||||
}
|
||||
|
||||
// add contact returned by collision detector
|
||||
for (i=0; i<num; i++) {
|
||||
for (int i=0; i<num; i++) {
|
||||
// set contact data
|
||||
if (condim > 6 || condim < 1) { // SHOULD NOT OCCUR
|
||||
mju_error("Invalid condim value: %d", i);
|
||||
|
||||
@@ -544,20 +544,22 @@ static void mj_advance(const mjModel* m, mjData* d,
|
||||
|
||||
// Euler integrator, semi-implicit in velocity, possibly skipping factorisation
|
||||
void mj_EulerSkip(const mjModel* m, mjData* d, int skipfactor) {
|
||||
int i, nv = m->nv, nM = m->nM;
|
||||
int nv = m->nv, nM = m->nM;
|
||||
mjMARKSTACK;
|
||||
mjtNum* qfrc = mj_stackAlloc(d, nv);
|
||||
mjtNum* qacc = mj_stackAlloc(d, nv);
|
||||
|
||||
// check for dof damping
|
||||
for (i=0; i<nv; i++) {
|
||||
int dof_damping = 0;
|
||||
for (int i=0; i<nv; i++) {
|
||||
if (m->dof_damping[i]>0) {
|
||||
dof_damping = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// no damping: explicit velocity integration
|
||||
if (i>=nv) {
|
||||
if (!dof_damping) {
|
||||
mju_copy(qacc, d->qacc, nv);
|
||||
}
|
||||
|
||||
@@ -568,7 +570,7 @@ void mj_EulerSkip(const mjModel* m, mjData* d, int skipfactor) {
|
||||
|
||||
// MhB = M + h*diag(B)
|
||||
mju_copy(MhB, d->qM, m->nM);
|
||||
for (i=0; i<nv; i++) {
|
||||
for (int i=0; i<nv; i++) {
|
||||
MhB[m->dof_Madr[i]] += m->opt.timestep * m->dof_damping[i];
|
||||
}
|
||||
|
||||
|
||||
@@ -622,7 +622,7 @@ void mj_saveModel(const mjModel* m, const char* filename, void* buffer, int buff
|
||||
// load model from binary MJB file
|
||||
// if vfs is not NULL, look up file in vfs before reading from disk
|
||||
mjModel* mj_loadModel(const char* filename, const mjVFS* vfs) {
|
||||
int i, header[4] = {0};
|
||||
int header[4] = {0};
|
||||
int expected_header[4] = {ID, sizeof(mjtNum), getnint(), getnptr()};
|
||||
int info[2000];
|
||||
int ptrbuf = 0;
|
||||
@@ -633,7 +633,7 @@ mjModel* mj_loadModel(const char* filename, const mjVFS* vfs) {
|
||||
const void* buffer = NULL;
|
||||
int buffer_sz = 0;
|
||||
if (vfs) {
|
||||
i = mj_findFileVFS(vfs, filename);
|
||||
int i = mj_findFileVFS(vfs, filename);
|
||||
if (i>=0) {
|
||||
buffer_sz = vfs->filesize[i];
|
||||
buffer = vfs->filedata[i];
|
||||
@@ -660,7 +660,7 @@ mjModel* mj_loadModel(const char* filename, const mjVFS* vfs) {
|
||||
}
|
||||
|
||||
// check header
|
||||
for (i=0; i<4; i++) {
|
||||
for (int i=0; i<4; i++) {
|
||||
if (header[i]!=expected_header[i]) {
|
||||
if (fp) {
|
||||
fclose(fp);
|
||||
|
||||
@@ -105,7 +105,7 @@ static void ARdiaginv(const mjModel* m, mjData* d, mjtNum* res, int flg_subR) {
|
||||
// extract diagonal block from AR, clamp diag to 1e-10 if flg_subR
|
||||
static void extractBlock(const mjModel* m, mjData* d, mjtNum* Ac,
|
||||
int start, int n, int flg_subR) {
|
||||
int k, nefc = d->nefc;
|
||||
int nefc = d->nefc;
|
||||
const mjtNum *AR = d->efc_AR;
|
||||
const int *rownnz = d->efc_AR_rownnz, *rowadr = d->efc_AR_rowadr, *colind = d->efc_AR_colind;
|
||||
|
||||
@@ -123,6 +123,7 @@ static void extractBlock(const mjModel* m, mjData* d, mjtNum* Ac,
|
||||
}
|
||||
*/
|
||||
// assume full sub-matrix, find starting k: same for all rows
|
||||
int k;
|
||||
for (k=0; k<rownnz[start]; k++) {
|
||||
if (colind[rowadr[start]+k]==start) {
|
||||
break;
|
||||
|
||||
@@ -45,7 +45,7 @@ static void vfs_strippath(char* newname, const char* oldname) {
|
||||
mju_strncpy(newname, oldname+i+1, mjMAXVFSNAME);
|
||||
|
||||
// make lowercase
|
||||
for (i=strlen(newname)-1; i>=0; i--) {
|
||||
for (int i=strlen(newname)-1; i>=0; i--) {
|
||||
if (newname[i]>='A' && newname[i]<='Z') {
|
||||
newname[i] = (char)(((int)newname[i]) +'a' - 'A');
|
||||
}
|
||||
|
||||
@@ -1059,9 +1059,9 @@ void mjv_addGeoms(const mjModel* m, mjData* d, const mjvOption* vopt,
|
||||
}
|
||||
|
||||
// get geom group and clamp
|
||||
int j = mjMAX(0, mjMIN(mjNGROUP-1, m->geom_group[i]));
|
||||
int geomgroup = mjMAX(0, mjMIN(mjNGROUP-1, m->geom_group[i]));
|
||||
|
||||
if (vopt->geomgroup[j]) {
|
||||
if (vopt->geomgroup[geomgroup]) {
|
||||
START
|
||||
|
||||
// construct geom
|
||||
@@ -1116,7 +1116,7 @@ void mjv_addGeoms(const mjModel* m, mjData* d, const mjvOption* vopt,
|
||||
// re-center infinite plane
|
||||
if (m->geom_size[3*i]<=0 || m->geom_size[3*i+1]<=0) {
|
||||
// vec = headpos - geompos
|
||||
for (j=0; j<3; j++) {
|
||||
for (int j=0; j<3; j++) {
|
||||
vec[j] = 0.5*(scn->camera[0].pos[j] + scn->camera[1].pos[j]) - d->geom_xpos[3*i+j];
|
||||
}
|
||||
|
||||
|
||||
@@ -1428,7 +1428,7 @@ static void mjGlad_find_coreGL(void) {
|
||||
* https://github.com/elmindreda/greg/blob/master/templates/greg.c.in#L176
|
||||
* https://github.com/glfw/glfw/blob/master/src/context.c#L36
|
||||
*/
|
||||
int i, major, minor;
|
||||
int major, minor;
|
||||
|
||||
const char* version;
|
||||
const char* prefixes[] = {
|
||||
@@ -1441,7 +1441,7 @@ static void mjGlad_find_coreGL(void) {
|
||||
version = (const char*) glGetString(GL_VERSION);
|
||||
if (!version) return;
|
||||
|
||||
for (i = 0; prefixes[i]; i++) {
|
||||
for (int i = 0; prefixes[i]; i++) {
|
||||
const size_t length = strlen(prefixes[i]);
|
||||
if (strncmp(version, prefixes[i], length) == 0) {
|
||||
version += length;
|
||||
|
||||
+69
-67
@@ -1656,7 +1656,6 @@ void mjui_update(int section, int item, const mjUI* ui,
|
||||
}
|
||||
|
||||
// draw section(s)
|
||||
int k;
|
||||
mjtNum sel;
|
||||
mjrRect r;
|
||||
char text[mjMAXUITEXT];
|
||||
@@ -1776,7 +1775,7 @@ void mjui_update(int section, int item, const mjUI* ui,
|
||||
drawrectangle(r, rgbpane, rgbpane, con);
|
||||
|
||||
// text lines
|
||||
for (k=0; k<it->multi.nelem; k++) {
|
||||
for (int k=0; k<it->multi.nelem; k++) {
|
||||
drawtext(it->multi.name[k],
|
||||
r.left+g_texthor,
|
||||
r.bottom+g_textver+(it->multi.nelem-k-1)*(con->charHeight+g_textver),
|
||||
@@ -1809,35 +1808,37 @@ void mjui_update(int section, int item, const mjUI* ui,
|
||||
break;
|
||||
|
||||
case mjITEM_CHECKINT:
|
||||
case mjITEM_CHECKBYTE:
|
||||
if (state) {
|
||||
rgbdecor = ui->color.check;
|
||||
case mjITEM_CHECKBYTE: {
|
||||
if (state) {
|
||||
rgbdecor = ui->color.check;
|
||||
}
|
||||
|
||||
// get value according to type
|
||||
int k;
|
||||
if (it->type==mjITEM_CHECKINT) {
|
||||
k = *(int*)it->pdata;
|
||||
} else {
|
||||
k = *(mjtByte*)it->pdata;
|
||||
}
|
||||
|
||||
// filled or outline
|
||||
if (k) {
|
||||
drawrectangle(it->rect, rgbdecor, NULL, con);
|
||||
} else {
|
||||
drawrectangle(it->rect, rgbdecor, rgbpane, con);
|
||||
}
|
||||
|
||||
// name
|
||||
drawtext(it->name,
|
||||
it->rect.left+g_texthor,
|
||||
it->rect.bottom+g_textver,
|
||||
maxwidth, rgbfont, con);
|
||||
|
||||
// shortcut
|
||||
if (ui->mousehelp && it->single.shortcut)
|
||||
shortcuthelp(it->rect, it->single.modifier, it->single.shortcut,
|
||||
ui, con);
|
||||
}
|
||||
|
||||
// get value according to type
|
||||
if (it->type==mjITEM_CHECKINT) {
|
||||
k = *(int*)it->pdata;
|
||||
} else {
|
||||
k = *(mjtByte*)it->pdata;
|
||||
}
|
||||
|
||||
// filled or outline
|
||||
if (k) {
|
||||
drawrectangle(it->rect, rgbdecor, NULL, con);
|
||||
} else {
|
||||
drawrectangle(it->rect, rgbdecor, rgbpane, con);
|
||||
}
|
||||
|
||||
// name
|
||||
drawtext(it->name,
|
||||
it->rect.left+g_texthor,
|
||||
it->rect.bottom+g_textver,
|
||||
maxwidth, rgbfont, con);
|
||||
|
||||
// shortcut
|
||||
if (ui->mousehelp && it->single.shortcut)
|
||||
shortcuthelp(it->rect, it->single.modifier, it->single.shortcut,
|
||||
ui, con);
|
||||
break;
|
||||
|
||||
case mjITEM_RADIO:
|
||||
@@ -1859,7 +1860,7 @@ void mjui_update(int section, int item, const mjUI* ui,
|
||||
drawrectangle(r, rgbdecor, NULL, con);
|
||||
|
||||
// element names
|
||||
for (k=0; k<it->multi.nelem; k++) {
|
||||
for (int k=0; k<it->multi.nelem; k++) {
|
||||
r = radioelement(it, k, ui, con);
|
||||
drawtext(it->multi.name[k],
|
||||
r.left+g_texthor,
|
||||
@@ -1868,39 +1869,40 @@ void mjui_update(int section, int item, const mjUI* ui,
|
||||
}
|
||||
break;
|
||||
|
||||
case mjITEM_RADIOLINE:
|
||||
if (state) {
|
||||
rgbdecor = ui->color.radio;
|
||||
}
|
||||
case mjITEM_RADIOLINE: {
|
||||
if (state) {
|
||||
rgbdecor = ui->color.radio;
|
||||
}
|
||||
|
||||
// name
|
||||
drawtext(it->name,
|
||||
s->rcontent.left+g_itemside+g_texthor,
|
||||
it->rect.bottom+g_textver,
|
||||
g_label-2*g_texthor, rgbfont, con);
|
||||
// name
|
||||
drawtext(it->name,
|
||||
s->rcontent.left+g_itemside+g_texthor,
|
||||
it->rect.bottom+g_textver,
|
||||
g_label-2*g_texthor, rgbfont, con);
|
||||
|
||||
// outline
|
||||
drawrectangle(it->rect, rgbdecor, rgbpane, con);
|
||||
// outline
|
||||
drawrectangle(it->rect, rgbdecor, rgbpane, con);
|
||||
|
||||
// make separators
|
||||
makeradioline(it, con, sep);
|
||||
// make separators
|
||||
makeradioline(it, con, sep);
|
||||
|
||||
// fill selected
|
||||
k = *(int*)it->pdata;
|
||||
r = it->rect;
|
||||
r.left += sep[k];
|
||||
r.width = sep[k+1] - sep[k];
|
||||
drawrectangle(r, rgbdecor, NULL, con);
|
||||
|
||||
// element names
|
||||
for (k=0; k<it->multi.nelem; k++) {
|
||||
// compute rectangle for element
|
||||
// fill selected
|
||||
int k = *(int*)it->pdata;
|
||||
r = it->rect;
|
||||
r.left += sep[k];
|
||||
r.width = sep[k+1] - sep[k];
|
||||
drawrectangle(r, rgbdecor, NULL, con);
|
||||
|
||||
// draw centered
|
||||
drawtextrect(r, it->multi.name[k], rgbfont, con);
|
||||
// element names
|
||||
for (int k=0; k<it->multi.nelem; k++) {
|
||||
// compute rectangle for element
|
||||
r = it->rect;
|
||||
r.left += sep[k];
|
||||
r.width = sep[k+1] - sep[k];
|
||||
|
||||
// draw centered
|
||||
drawtextrect(r, it->multi.name[k], rgbfont, con);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -1959,7 +1961,7 @@ void mjui_update(int section, int item, const mjUI* ui,
|
||||
r.height = g_textver;
|
||||
|
||||
// draw ticks
|
||||
for (k=1; k<(int)it->slider.divisions; k++) {
|
||||
for (int k=1; k<(int)it->slider.divisions; k++) {
|
||||
r.left = it->rect.left - r.width/2 +
|
||||
it->rect.width*k/it->slider.divisions;
|
||||
drawrectangle(r, rgbpane, NULL, con);
|
||||
@@ -2007,8 +2009,8 @@ void mjui_update(int section, int item, const mjUI* ui,
|
||||
}
|
||||
|
||||
// show cursor
|
||||
k = textwidth(ui->edittext + ui->editscroll, con,
|
||||
ui->editcursor - ui->editscroll);
|
||||
int k = textwidth(ui->edittext + ui->editscroll, con,
|
||||
ui->editcursor - ui->editscroll);
|
||||
r.left = it->rect.left + g_texthor + k - SCL(1, con);
|
||||
r.width = 2*SCL(1, con);
|
||||
r.bottom = it->rect.bottom + g_textver/2;
|
||||
@@ -2064,7 +2066,7 @@ void mjui_update(int section, int item, const mjUI* ui,
|
||||
drawrectangle(r, ui->color.select2, NULL, con);
|
||||
|
||||
// hightlight row under mouse
|
||||
k = findselect(it, ui, state, con);
|
||||
int k = findselect(it, ui, state, con);
|
||||
if (k>=0) {
|
||||
mjrRect r1 = r;
|
||||
r1.bottom = r.bottom + (it->multi.nelem-1-k)*cellheight;
|
||||
@@ -2073,7 +2075,7 @@ void mjui_update(int section, int item, const mjUI* ui,
|
||||
}
|
||||
|
||||
// values
|
||||
for (k=0; k<it->multi.nelem; k++) {
|
||||
for (int k=0; k<it->multi.nelem; k++) {
|
||||
drawtext(it->multi.name[k],
|
||||
r.left+g_texthor,
|
||||
r.bottom+g_textver+(it->multi.nelem-1-k)*cellheight,
|
||||
@@ -2223,7 +2225,7 @@ mjuiItem* mjui_event(mjUI* ui, mjuiState* state, const mjrContext* con) {
|
||||
else if (sect_cur>0 && item_cur<0) {
|
||||
// double-click: make all sections like this
|
||||
if (state->doubleclick) {
|
||||
for (i=0; i<ui->nsect; i++) {
|
||||
for (int i=0; i<ui->nsect; i++) {
|
||||
if (ui->sect[i].state<2 && ui->sect[sect_cur-1].state<2) {
|
||||
ui->sect[i].state = ui->sect[sect_cur-1].state;
|
||||
}
|
||||
@@ -2445,7 +2447,7 @@ mjuiItem* mjui_event(mjUI* ui, mjuiState* state, const mjrContext* con) {
|
||||
case mjKEY_BACKSPACE: // delete before cursor
|
||||
if (ui->editcursor>0) {
|
||||
// shift chars after cursor to the left
|
||||
for (i=ui->editcursor; i<=strlen(ui->edittext); i++) {
|
||||
for (int i=ui->editcursor; i<=strlen(ui->edittext); i++) {
|
||||
ui->edittext[i-1] = ui->edittext[i];
|
||||
}
|
||||
|
||||
@@ -2457,7 +2459,7 @@ mjuiItem* mjui_event(mjUI* ui, mjuiState* state, const mjrContext* con) {
|
||||
case mjKEY_DELETE: // delete after cursor
|
||||
if (ui->editcursor<strlen(ui->edittext)) {
|
||||
// shift chars after cursor to the left
|
||||
for (i=ui->editcursor; i<=strlen(ui->edittext); i++) {
|
||||
for (int i=ui->editcursor; i<=strlen(ui->edittext); i++) {
|
||||
ui->edittext[i] = ui->edittext[i+1];
|
||||
}
|
||||
}
|
||||
@@ -2467,7 +2469,7 @@ mjuiItem* mjui_event(mjUI* ui, mjuiState* state, const mjrContext* con) {
|
||||
key = validkey(key, strlen(ui->edittext), it_edit->type, state);
|
||||
if (key) {
|
||||
// shift chars after cursor to the right
|
||||
for (i=strlen(ui->edittext); i>=ui->editcursor; i--) {
|
||||
for (int i=strlen(ui->edittext); i>=ui->editcursor; i--) {
|
||||
ui->edittext[i+1] = ui->edittext[i];
|
||||
}
|
||||
|
||||
@@ -2494,7 +2496,7 @@ mjuiItem* mjui_event(mjUI* ui, mjuiState* state, const mjrContext* con) {
|
||||
for (int n=0; n<ui->nsect; n++)
|
||||
if (matchshortcut(state, ui->sect[n].modifier, ui->sect[n].shortcut)) {
|
||||
// collapse all
|
||||
for (i=0; i<ui->nsect; i++) {
|
||||
for (int i=0; i<ui->nsect; i++) {
|
||||
if (ui->sect[i].state<2) {
|
||||
ui->sect[i].state = 0;
|
||||
}
|
||||
@@ -2516,7 +2518,7 @@ mjuiItem* mjui_event(mjUI* ui, mjuiState* state, const mjrContext* con) {
|
||||
|
||||
// search item shortcuts
|
||||
for (int n=0; n<ui->nsect; n++) {
|
||||
for (i=0; i<ui->sect[n].nitem; i++) {
|
||||
for (int i=0; i<ui->sect[n].nitem; i++) {
|
||||
// get pointer to item
|
||||
it = ui->sect[n].item + i;;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user