905 {
907 0,
908 0,
910
911
912
913
914
915 0
916 };
918
919 int a_top = *a_runs++;
920 int a_bot = *a_runs++;
921 int b_top = *b_runs++;
922 int b_bot = *b_runs++;
923
924 a_runs += 1;
925 b_runs += 1;
926
927
928
933
935
937
943 bool a_flush = false;
944 bool b_flush = false;
945
946 if (a_top < b_top) {
947 top = a_top;
948 run0 = a_runs;
949 if (a_bot <= b_top) {
950 bot = a_bot;
951 a_flush = true;
952 } else {
953 bot = a_top = b_top;
954 }
955 } else if (b_top < a_top) {
956 top = b_top;
957 run1 = b_runs;
958 if (b_bot <= a_top) {
959 bot = b_bot;
960 b_flush = true;
961 } else {
962 bot = b_top = a_top;
963 }
964 } else {
965 top = a_top;
966 run0 = a_runs;
967 run1 = b_runs;
968 if (a_bot <= b_bot) {
969 bot = b_top = a_bot;
970 a_flush = true;
971 }
972 if (b_bot <= a_bot) {
973 bot = a_top = b_bot;
974 b_flush = true;
975 }
976 }
977
978 if (top > prevBot) {
979 oper.addSpan(top, gSentinel, gSentinel);
980 }
981 oper.addSpan(bot, run0, run1);
982
983 if (quickExit && !oper.isEmpty()) {
985 }
986
987 if (a_flush) {
989 a_top = a_bot;
990 a_bot = *a_runs++;
991 a_runs += 1;
993 a_top = a_bot;
994 }
995 }
996 if (b_flush) {
998 b_top = b_bot;
999 b_bot = *b_runs++;
1000 b_runs += 1;
1002 b_top = b_bot;
1003 }
1004 }
1005
1006 prevBot = bot;
1007 }
1008 return oper.flush();
1009}
#define SK_INIT_TO_AVOID_WARNING
#define assert_sentinel(value, isSentinel)
#define QUICK_EXIT_TRUE_COUNT
static SkRegionPriv::RunType * skip_intervals(const SkRegionPriv::RunType runs[])
static float min(float r, float g, float b)