func.pwn 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. GetFontName(fontid, name[], name_size) {
  2. if( !IsValidFontID(fontid) ) {
  3. return 0;
  4. }
  5. strunpack(name, g_FontCache[fontid], name_size);
  6. return 1;
  7. }
  8. FindFonts(result[], result_size, search[], offset, &max_offset) {
  9. new rows_added;
  10. if( isempty(search) ) {
  11. for(new fontid = offset; fontid < MAX_FONTS; fontid ++) {
  12. if( rows_added >= result_size ) {
  13. break;
  14. }
  15. result[rows_added ++] = fontid;
  16. }
  17. max_offset = MAX_FONTS - 1;
  18. } else {
  19. format(g_QueryString, sizeof g_QueryString, "\
  20. SELECT fontid, \
  21. (SELECT COUNT(*) FROM font_data WHERE fontid LIKE '%%%q%%' OR name LIKE '%%%q%%') AS max_rowcount \
  22. FROM font_data \
  23. WHERE fontid LIKE '%%%q%%' OR name LIKE '%%%q%%' \
  24. LIMIT %i OFFSET %i",
  25. search, search,
  26. search, search,
  27. result_size, offset
  28. );
  29. g_DBResult = db_query(g_ResourceDB, g_QueryString);
  30. new result_rows = db_num_rows(g_DBResult);
  31. if( result_rows > 0 ) {
  32. max_offset = db_get_field_assoc_int(g_DBResult, "max_rowcount") - 1;
  33. if( max_offset < 0 ) {
  34. max_offset = 0;
  35. }
  36. }
  37. for(new row; row < result_rows; row ++) {
  38. if( rows_added >= result_size ) {
  39. break;
  40. }
  41. result[rows_added ++] = db_get_field_assoc_int(g_DBResult, "fontid");
  42. db_next_row(g_DBResult);
  43. }
  44. db_free_result(g_DBResult);
  45. }
  46. return rows_added;
  47. }
  48. LoadFontCache() {
  49. g_DBResult = db_query(g_ResourceDB, "SELECT * FROM font_data");
  50. for(new row, rows = db_num_rows(g_DBResult), fontid; row < rows; row ++) {
  51. fontid = db_get_field_assoc_int(g_DBResult, "fontid");
  52. if( IsValidFontID(fontid) ) {
  53. db_get_field_assoc(g_DBResult, "name", g_FontString, sizeof g_FontString);
  54. strpack(g_FontCache[fontid], g_FontString, MAX_FONTNAME_LEN+1);
  55. }
  56. db_next_row(g_DBResult);
  57. }
  58. db_free_result(g_DBResult);
  59. }