static void Interpolator_setKeyFrame(JNIEnv* env, jobject clazz, jlong interpHandle, jint index, jint msec, jfloatArray valueArray, jfloatArray blendArray) { SkInterpolator* interp = reinterpret_cast<SkInterpolator*>(interpHandle); SkScalar blendStorage[4]; SkScalar* blend = NULL; AutoJavaFloatArray autoValues(env, valueArray); float* values = autoValues.ptr(); int i, n = autoValues.length(); SkAutoSTMalloc<16, SkScalar> storage(n); SkScalar* scalars = storage.get(); for (i = 0; i < n; i++) scalars[i] = SkFloatToScalar(values[i]); if (blendArray != NULL) { AutoJavaFloatArray autoBlend(env, blendArray, 4); values = autoBlend.ptr(); for (i = 0; i < 4; i++) blendStorage[i] = SkFloatToScalar(values[i]); blend = blendStorage; } interp->setKeyFrame(index, msec, scalars, blend); }
static void getValues(JNIEnv* env, jobject clazz, jlong matrixHandle, jfloatArray values) { SkMatrix* matrix = reinterpret_cast<SkMatrix*>(matrixHandle); AutoJavaFloatArray autoValues(env, values, 9, kRW_JNIAccess); float* dst = autoValues.ptr(); #ifdef SK_SCALAR_IS_FLOAT for (int i = 0; i < 9; i++) { dst[i] = matrix->get(i); } #else SkASSERT(false); #endif }
void PopulatorDialog::populateButton_clicked() { // Avoid QVariantList extension because it doesn't work for column names // containing special characters resultEdit->setHtml(""); m_columnList.clear(); for (int i = 0; i < columnTable->rowCount(); ++i) m_columnList.append(qobject_cast<PopulatorColumnWidget*>(columnTable->cellWidget(i, 2))->column()); QList<QVariantList> values; foreach (Populator::PopColumn i, m_columnList) { switch (i.action) { case Populator::T_AUTO: values.append(autoValues(i)); break; case Populator::T_AUTO_FROM: values.append(autoFromValues(i)); break; case Populator::T_NUMB: values.append(numberValues(i)); break; case Populator::T_TEXT: values.append(textValues(i)); break; case Populator::T_PREF: values.append(textPrefixedValues(i)); break; case Populator::T_STAT: values.append(staticValues(i)); break; case Populator::T_DT_NOW: case Populator::T_DT_NOW_UNIX: case Populator::T_DT_NOW_JULIAN: case Populator::T_DT_RAND: case Populator::T_DT_RAND_UNIX: case Populator::T_DT_RAND_JULIAN: values.append(dateValues(i)); break; case Populator::T_IGNORE: break; }; } if (!execSql("SAVEPOINT POPULATOR;", tr("Cannot create savepoint"))) { execSql("ROLLBACK TO POPULATOR;", tr("Cannot roll back after error")); return; } qlonglong cntPre, cntPost; resultEdit->clear(); cntPre = tableRowCount(); QSqlQuery query(QSqlDatabase::database(SESSION_NAME)); for (int i = 0; i < spinBox->value(); ++i) { QStringList slr; for (int j = 0; j < values.count(); ++j) { slr.append(Utils::literal(values.at(j).at(i).toString())); } QString sql = QString("INSERT ") + (constraintBox->isChecked() ? "OR IGNORE" : "") + " INTO " + Utils::quote(m_schema) + "." + Utils::quote(m_table) + " (" + sqlColumns() + ") VALUES (" + slr.join(",") + ");"; query.prepare(sql); if (!query.exec()) { QString errtext = tr("Cannot insert values") + ":<br/><span style=\" color:#ff0000;\">" + query.lastError().text() + "<br/></span>" + tr("using sql statement:") + "<br/><tt>" + sql; resultAppend(errtext); if (!constraintBox->isChecked()) { break; } } else { updated = true; } } if (!execSql("RELEASE POPULATOR;", tr("Cannot release savepoint"))) { if (!execSql("ROLLBACK TO POPULATOR;", tr("Cannot roll back either"))) { resultAppend(tr( "Database may be left with a pending savepoint.")); } updated = false; return; } cntPost = tableRowCount(); if (cntPre != -1 && cntPost != -1) resultAppend(tr("Row(s) inserted: %1").arg(cntPost-cntPre)); }