734 {
743
744
745 hints->num_points = 0;
746 hints->num_contours = 0;
747
748 hints->axis[0].num_segments = 0;
749 hints->axis[0].num_edges = 0;
750 hints->axis[1].num_segments = 0;
751 hints->axis[1].num_edges = 0;
752
753
756
758 {
759 if ( !
hints->contours )
760 {
763 }
764 }
765 else if ( new_max > old_max )
766 {
767 if (
hints->contours ==
hints->embedded.contours )
769
770 new_max = ( new_max + 3 ) & ~3U;
771
774
776 }
777
778
779
780
781
782
785
787 {
788 if ( !
hints->points )
789 {
792 }
793 }
794 else if ( new_max > old_max )
795 {
796 if (
hints->points ==
hints->embedded.points )
798
799 new_max = ( new_max + 2 + 7 ) & ~7U;
800
803
805 }
806
809
810
811
812
813
816
818 {
821 }
822
823 hints->x_scale = x_scale;
824 hints->y_scale = y_scale;
825 hints->x_delta = x_delta;
826 hints->y_delta = y_delta;
827
828 hints->xmin_delta = 0;
829 hints->xmax_delta = 0;
830
832 if (
hints->num_points == 0 )
834
835 {
838
839
840 FT_UInt units_per_em =
hints->metrics->scaler.face->units_per_EM;
841 FT_Int near_limit = 20 * units_per_em / 2048;
842
843
844
845 {
852
853
855 {
857
858
861
866
869
871 {
874 break;
877 break;
878 default:
880 }
881
884
887
891
893 {
894 if ( ++contour_index < outline->n_contours )
895 {
899 }
900 }
901 }
902 }
903
904
905 {
910
911
912 for ( ; contour < contour_limit; contour++,
end++ )
913 {
916 }
917 }
918
919 {
920
921
922
923
924
925
926
927
928
929
930
931
932 FT_Int near_limit2 = 2 * near_limit - 1;
933
936
937
938 for ( contour =
hints->contours; contour < contour_limit; contour++ )
939 {
942
944
945
946
947
948
949
952
953 while ( prev !=
first )
954 {
957
958
959
960
961
962
963
964
965
967 break;
968
971 }
972
973
975
976
977
978
980
981
982
983
984
985
986
987
988
991
992 out_x = 0;
993 out_y = 0;
994
996 do
997 {
999
1000
1003
1006
1008 {
1010 continue;
1011 }
1012
1015
1017
1018
1019
1021 for ( curr = curr->
next; curr !=
next; curr = curr->
next )
1022 {
1025 }
1027
1030
1031 out_x = 0;
1032 out_y = 0;
1033
1035 }
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1047 {
1049 continue;
1050
1053 {
1054
1055
1058
1061
1062
1063 in_x =
point->fx - prev_v->
fx;
1064 in_y =
point->fy - prev_v->
fy;
1065
1066 out_x = next_u->
fx -
point->fx;
1067 out_y = next_u->
fy -
point->fy;
1068
1069 if ( ( in_x ^ out_x ) >= 0 && ( in_y ^ out_y ) >= 0 )
1070 {
1071
1072
1073
1075
1076 prev_v->
u = (
FT_Pos)( next_u - prev_v );
1077 next_u->
v = -prev_v->
u;
1078 }
1079 }
1080 }
1081
1082
1083
1084
1085
1086
1087
1089 {
1091 continue;
1092
1094 {
1095
1096 Is_Weak_Point:
1098 }
1100 {
1102 {
1103
1104
1105 goto Is_Weak_Point;
1106 }
1107
1108 {
1111
1112
1117 {
1118
1119
1120
1121
1122 prev_v->
u = (
FT_Pos)( next_u - prev_v );
1123 next_u->
v = -prev_v->
u;
1124
1125 goto Is_Weak_Point;
1126 }
1127 }
1128 }
1130 {
1131
1132 goto Is_Weak_Point;
1133 }
1134 }
1135 }
1136 }
1137
1140 }
af_direction_compute(FT_Pos dx, FT_Pos dy)
#define AF_CONTOURS_EMBEDDED
#define AF_POINTS_EMBEDDED
unsigned short(__cdecl typeof(TIFFCurrentDirectory))(struct tiff *)
ft_corner_is_flat(FT_Pos in_x, FT_Pos in_y, FT_Pos out_x, FT_Pos out_y)
#define FT_CURVE_TAG_CUBIC
#define FT_CURVE_TAG_CONIC
#define FT_CURVE_TAG(flag)
@ FT_ORIENTATION_POSTSCRIPT
FT_Outline_Get_Orientation(FT_Outline *outline)
static unsigned __int64 next