static bool is_hinted_without_gasp(DWriteFontTypeface* typeface) { AutoTDWriteTable<SkOTTableMaximumProfile> maxp(typeface->fDWriteFontFace.get()); if (!maxp.fExists) { return false; } if (maxp.fSize < sizeof(SkOTTableMaximumProfile::Version::TT)) { return false; } if (maxp->version.version != SkOTTableMaximumProfile::Version::TT::VERSION) { return false; } if (0 == maxp->version.tt.maxSizeOfInstructions) { // No hints. return false; } AutoTDWriteTable<SkOTTableGridAndScanProcedure> gasp(typeface->fDWriteFontFace.get()); return !gasp.fExists; }
void CODECHECK_sexActivity(Population &P) { vector<double> age = vector_seq(10.0, 80.0, 200); vector<double> rskgrp = vector_seq(0, 2, 3); vector<double> nprtn = vector_seq(0, 9, 10); // --- Age vector<double> fage(age.size()); for (int i=0; i<age.size(); i++) { fage[i] = P.sexAct_reduce_age(age[i]); } dcMatrix Mage(age); Mage.addColVector(fage); Mage.WriteToFileCSV(_DIR_VIZINPUT + "viz_input_sexact_age.out"); // --- Risk vector<double> frisk(rskgrp.size()); for (int i=0; i<rskgrp.size(); i++) { frisk[i] = P.sexAct_reduce_riskGroup((int)(rskgrp[i])); } dcMatrix Mrisk(rskgrp); Mrisk.addColVector(frisk); Mrisk.WriteToFileCSV(_DIR_VIZINPUT + "viz_input_sexact_risk.out"); // --- Number of partners vector<double> fnp(nprtn.size()); for (int i=0; i<nprtn.size(); i++) { fnp[i] = P.sexAct_reduce_nPartners((int)(nprtn[i])); } dcMatrix Mnp(nprtn); Mnp.addColVector(fnp); Mnp.WriteToFileCSV(_DIR_VIZINPUT + "viz_input_sexact_npartner.out"); // --- Maximum number of concurrent partners vector<double> maxp(rskgrp.size()); for (int i=0; i<rskgrp.size(); i++) { maxp[i] = P.proba_nMaxCurrSexPartner(male, (int)(rskgrp[i])); } dcMatrix Mmaxp(rskgrp); Mmaxp.addColVector(maxp); Mmaxp.WriteToFileCSV(_DIR_VIZINPUT + "viz_input_sexact_maxpartner_male.out"); maxp.clear(); maxp.resize(rskgrp.size()); for (int i=0; i<rskgrp.size(); i++) { maxp[i] = P.proba_nMaxCurrSexPartner(female, (int)(rskgrp[i])); } dcMatrix Mmaxp2(rskgrp); Mmaxp2.addColVector(maxp); Mmaxp2.WriteToFileCSV(_DIR_VIZINPUT + "viz_input_sexact_maxpartner_female.out"); // --- Probability sex with CSW vector<double> pcsw(rskgrp.size()); for (int i=0; i<rskgrp.size(); i++) { pcsw[i] = P.probaSex_sexworker((int)(rskgrp[i])); } dcMatrix Mpcsw(rskgrp); Mpcsw.addColVector(pcsw); Mpcsw.WriteToFileCSV(_DIR_VIZINPUT + "viz_input_sexact_probacsw.out"); // --- Probability sex type 0 vector<double> psex0; vector<double> r1; vector<double> r2; for (int i=0; i<=rskgrp.size(); i++) { for (int j=0; j<=rskgrp.size(); j++) { r1.push_back(i); r2.push_back(j); psex0.push_back(P.probaSex_type0(i, j)); } } dcMatrix Msex0(r1); Msex0.addColVector(r2); Msex0.addColVector(psex0); Msex0.WriteToFileCSV(_DIR_VIZINPUT + "viz_input_sexact_probatype0.out"); // --- Probability sex type 1 vector<double> psex1; r1.clear(); r2.clear(); for (int i=0; i<=rskgrp.size(); i++) { for (int j=0; j<=rskgrp.size(); j++) { r1.push_back(i); r2.push_back(j); psex1.push_back(P.probaSex_type1(i, j)); } } dcMatrix Msex1(r1); Msex1.addColVector(r2); Msex1.addColVector(psex1); Msex1.WriteToFileCSV(_DIR_VIZINPUT + "viz_input_sexact_probatype1.out"); }