DarkShadow44

Untitled

May 1st, 2020
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.46 KB | None | 0 0
  1. static BOOL sortkey_get_extra_weights(struct sortkey_data* data, int flags, WCHAR c)
  2. {
  3. struct character_info info;
  4.  
  5. if (!sortkey_get_char(data, &info, c))
  6. {
  7. return FALSE;
  8. }
  9.  
  10. if (info.script_member == SORTKEY_JAPANESE)
  11. {
  12. if (info.weight_primary <= 1)
  13. {
  14. /* TODO */
  15. }
  16. else
  17. {
  18. const BYTE BASELINE_EXTRA = 0xc4;
  19. const BYTE ISOLATE_KANA = 0x20 | BASELINE_EXTRA; /* if bit is set then hiragana, else katakana */
  20. const BYTE ISOLATE_SMALL = 0x2 | BASELINE_EXTRA; /* if bit is set then normal kana, else small kana */
  21. const BYTE ISOLATE_WIDTH = 0x1 | BASELINE_EXTRA; /* if bit is set then full width, else half width */
  22. int weight_case = info.weight_case | BASELINE_EXTRA;
  23.  
  24. BYTE flag_small = (BYTE)(weight_case & ISOLATE_SMALL);
  25. BYTE flag_kana = (BYTE)(weight_case & ISOLATE_KANA);
  26. BYTE flag_width = (BYTE)(weight_case & ISOLATE_WIDTH);
  27.  
  28. if (flags & NORM_IGNOREKANATYPE)
  29. flag_kana = BASELINE_EXTRA;
  30. if (flags & NORM_IGNOREWIDTH)
  31. flag_width = BASELINE_EXTRA;
  32.  
  33. if ((NORM_IGNORENONSPACE & flags) == 0)
  34. {
  35. sortkey_add_weight(data, flag_small);
  36. }
  37. sortkey_add_weight(data, flag_kana);
  38. sortkey_add_weight(data, flag_width);
  39. }
  40. }
  41. return TRUE;
  42. }
Advertisement
Add Comment
Please, Sign In to add comment